VBA Protéger / Déprotéger les feuilles de calcul

Ce didacticiel vous apprendra tout sur la protection des feuilles de calcul Excel dans VBA - Comment protéger ou déprotéger des feuilles de calcul dans Excel.

Déprotéger la feuille de calcul Excel sans mot de passe

Pour déprotéger une feuille de calcul qui n'est pas protégée par mot de passe, utilisez cette simple ligne de code :

1 Feuilles de calcul ("Feuille1"). Déprotéger

Déprotéger la feuille de calcul Excel avec un mot de passe

Pour déprotéger une feuille de calcul protégée par mot de passe, vous devez également saisir le mot de passe :

1 Feuilles de calcul ("Feuille1"). Déprotéger "Mot de passe"

Déprotéger la feuille - Mot de passe perdu

Pour déprotéger une feuille de calcul sans connaître le mot de passe, vous devez utiliser un complément de récupération de mot de passe.

Protéger les feuilles de calcul

La protection de la feuille de calcul vous permet de verrouiller certains aspects de la feuille contre l'édition.

Ce menu se trouve dans Accueil > Format > Protéger la feuille ou en cliquant avec le bouton droit sur le nom de l'onglet Feuille :

Le plus souvent, cela est utilisé pour protéger les cellules "verrouillées" de la modification, permettant uniquement à l'utilisateur final de modifier certaines cellules.

Vous pouvez verrouiller des cellules en les sélectionnant et en ouvrant le Onglet Protection du Menu de 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 lignes et des colonnes), ou d'interagir avec les filtres automatiques, et bien plus encore.

Protéger la feuille de travail - Sans mot de passe

Vous souhaiterez peut-être protéger une feuille de calcul sans entrer de mot de passe. Cela empêchera les modifications accidentelles de la feuille de calcul, tout en permettant à l'utilisateur d'apporter des modifications s'il le souhaite.

1 Feuilles de calcul ("Feuille1").Protéger

Feuille de travail de protection - Protection par mot de passe

1 Feuilles de calcul ("Feuille1").Protéger "Mot de passe"

Protéger les paramètres de la feuille de calcul

Les exemples ci-dessus protégeront les feuilles de calcul avec les paramètres de protection standard. Au lieu de cela, vous voudrez peut-être personnaliser ce qui est protégé :

12345 Worksheets("Sheet1").Protect Password:=strPassword, 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 vous recommande d'enregistrer une macro avec les paramètres souhaités (choisis avec le menu Protection de la feuille de calcul ci-dessus) et de copier + coller le code enregistré dans votre procédure.

Protéger la feuille - Autoriser VBA à apporter 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 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 :

123456789 Sous-Édition_Feuille1()'Déprotéger la feuille1Feuilles de calcul ("Feuille1"). Déprotéger'Faire quelque chose à Sheet1'Reprotéger la feuille1Feuilles de calcul ("Feuille1").ProtégerFin du sous-marin

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 codage.

Au lieu de cela, vous pouvez utiliser le paramètre UserInterFaceOnly. Lorsque VRAI, les feuilles de calcul seront UNIQUEMENT protégées des utilisateurs, PAS de VBA.Votre code VBA sera libre de modifier la feuille de calcul comme si elle était déverrouillée.

Deux points importants à propos de UserInterFaceOnly :

  • Ce paramètre n'est pas disponible dans le menu Worksheet Protection (illustré ci-dessus). C'est 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 ouverture d'un classeur.

Ainsi, pour définir la propriété UserInterFaceOnly, vous devez placer la procédure événementielle Workbook_Open suivante dans le module ThisWorkbook :

1234567 Sous-classeur privé_Open()Dim ws As Feuille de calculPour chaque ws dans ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly:=TrueWS suivantFin du sous-marin

Workbook_Open est une procédure événementielle spéciale qui s'exécutera à chaque ouverture du classeur. Il doit être placé dans le module ThisWorkbook. Vous pouvez également utiliser la procédure événementielle Auto_Open (non abordée ici).

Déprotéger la macro de toutes les feuilles

Cette macro déprotégera toutes les feuilles d'un classeur :

123456789 ' Déprotéger toutes les feuilles de calculSous UnProtectAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuilles de calculws.Déprotéger le "mot de passe"WS suivantFin du sous-marin

Protéger toutes les feuilles de macro

Cette macro protégera toutes les feuilles d'un classeur :

123456789 ' Protéger toutes les feuilles de calculSous ProtectAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuilles de calculws.Protect "mot de passe"WS suivantFin du sous-marin

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave