VBA Protéger / Déprotéger les Feuilles de Calcul
In this Article
- Déprotéger une Feuille de Calcul Excel Sans Mot de Passe
- Déprotéger une Feuille de Calcul Excel Avec un Mot de Passe
- Déprotéger une Feuille – Mot de Passe Perdu
- Protection des Feuilles de Calcul
- Protéger une Feuille de Calcul – Sans Mot de Passe
- Protection d’une Feuille de Calcul – Protection par Mot de Passe
- Paramètres de Protection des Feuilles de Calcul
- Protéger la Feuille – Autoriser VBA à Effectuer des Modifications
- Macro de Déprotection de Toutes les Feuilles
- Macro de Protection de Toutes les Feuilles
Ce tutoriel vous apprendra tout sur la protection des feuilles de calcul Excel en VBA – Comment protéger ou déprotéger des feuilles de calcul dans Excel.
Déprotéger une Feuille de Calcul Excel Sans Mot de Passe
Pour enlever la protection sur une feuille de calcul qui n’est pas protégée par un mot de passe, utilisez cette simple ligne de code :
Worksheets("Feuil1").Unprotect
Déprotéger une Feuille de Calcul Excel Avec un Mot de Passe
Pour déprotéger une feuille de calcul qui est protégée par un mot de passe, vous devez également saisir le mot de passe :
Worksheets("Feuil1").Unprotect "MotDePasse"
Déprotéger une Feuille – Mot de Passe Perdu
Pour déprotéger une feuille de calcul sans connaître le mot de passe, vous devez utiliser un module complémentaire de récupération de mot de passe.
Protection des Feuilles de Calcul
La protection des feuilles de calcul vous permet de verrouiller certains aspects de la feuille pour empêcher leur modification.
Ce menu se trouve dans Accueil > Format > Protéger la feuille ou en cliquant avec le bouton droit de la souris sur le nom de l’onglet Feuille :
Le plus souvent, ce menu est utilisé pour protéger les cellules « verrouillées » permettant uniquement à l’utilisateur final d’éditer certaines cellules.
Vous pouvez verrouiller des cellules en les sélectionnant et en ouvrant l’onglet Protection du menu Formatage des cellules (CTRL + 1).
Vous pouvez également empêcher l’utilisateur de modifier la structure de la feuille de calcul (insertion, suppression ou redimensionnement des rangées et des colonnes), ou d’interagir avec les filtres automatiques, et bien plus encore.
Protéger une Feuille de Calcul – Sans Mot de Passe
Vous pouvez vouloir protéger une feuille de calcul sans saisir de mot de passe. Cela empêchera toute modification accidentelle de la feuille de calcul, tout en permettant à l’utilisateur d’effectuer des modifications s’il le souhaite.
Worksheets("Feuil1").Protect
Protection d’une Feuille de Calcul – Protection par Mot de Passe
Worksheets("Feuil1").Protect "MotDePasse"
Paramètres de Protection des Feuilles de Calcul
Les exemples ci-dessus protègent les feuilles de calcul avec les paramètres de protection standard. Il est possible que vous souhaitiez personnaliser ce qui est protégé :
Worksheets("Feuil1").Protect Password:=strMotDePasse, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
UserInterfaceOnly:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _
AllowFormattingRows:=False, AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, AllowDeletingColumns:=False, AllowDeletingRows:=False, _
AllowSorting:=False, AllowFiltering:=False, AllowUsingPivotTables:=False
Au lieu d’utiliser la syntaxe ci-dessus, je recommande d’enregistrer une macro avec les paramètres souhaités (choisis dans le menu Protection de la feuille de travail ci-dessus) et de copier et coller le code enregistré dans votre procédure.
Protéger la Feuille – Autoriser VBA à Effectuer des Modifications
Par défaut, lorsque vous protégez une feuille, la protection s’applique aux opérations VBA en plus des actions de l’utilisateur. Si VBA tente de modifier une cellule verrouillée, vous verrez apparaître une erreur d’exécution 1004. Pour éviter cela, vous pouvez déprotéger et reprotéger vos feuilles de calcul chaque fois que VBA doit interagir avec elles :
Sub Modification_Feuil1()
'Déprotection de la feuille 1
Worksheets("Feuil1").Unprotect
'Faites les modification sur la feuille 1
'Ré-applique la protection sur la feuille 1
Worksheets("Feuil1").Protect
End Sub
Cependant, il est facile d’oublier de déprotéger et/ou de reprotéger vos feuilles de calcul. Cela peut augmenter la probabilité d’une erreur de programmation.
Au lieu de cela, vous pouvez utiliser le paramètre UserInterFaceOnly. Lorsque ce paramètre est VRAI, les feuilles de calcul sont protégées UNIQUEMENT contre les utilisateurs, et NON contre VBA. Votre code VBA sera libre de modifier la feuille de calcul comme si elle était déverrouillée.
Deux points importants concernant UserInterFaceOnly :
- Ce paramètre n’est pas disponible dans le menu Protection de la feuille de travail (illustré ci-dessus). Il s’agit d’un paramètre qui doit être défini en VBA.
- Le paramètre n’est pas enregistré lorsque vous fermez un classeur. Il doit être redéfini chaque fois qu’un classeur est ouvert.
Ainsi, afin de définir la propriété UserInterFaceOnly, vous devez placer la procédure déclenchée par l’évenement Workbook_Open suivante dans le module ThisWorkbook :
Private Sub Workbook_Open()
Dim fc As Worksheet
For Each fc in ThisWorkbook.Worksheets
fc.Protect UserInterfaceOnly:=True
Next fc
End Sub
Workbook_Open est une procédure événementielle spéciale qui s’exécute chaque fois que le classeur est ouvert. Elle doit être placée dans le module ThisWorkbook. Vous pouvez également utiliser la procédure événementielle Auto_Open (non traitée dans cet article).
Macro de Déprotection de Toutes les Feuilles
Cette macro permet de déprotéger toutes les feuilles d’un classeur :
' Déprotéger toutes les feuilles de calcul
Sub DéprotégerToutesLesFeuilles()
Dim fc As Worksheet
For Each fc In Worksheets
fc.Unprotect "MotDePasse"
Next fc
End Sub
Macro de Protection de Toutes les Feuilles
Cette macro protège toutes les feuilles d’un classeur :
' Protéger toutes les feuilles de calcul
Sub ProtégerToutesLesFeuilles()
Dim fc As Worksheet
For Each fc In Worksheets
fc.Protect "MotDePasse"
Next fc
End Sub