Excel vous permet de protéger vos classeurs Excel contre les modifications. Ce didacticiel vous montrera comment protéger ou déprotéger la structure d'un classeur à l'aide de VBA.
Protection des classeurs VBA
VBA Workbook Protection vous permet de verrouiller la structure du classeur. Lorsqu'un classeur est protégé, les utilisateurs ne pourront pas ajouter, supprimer, masquer/afficher ou protéger/déprotéger des feuilles de calcul. Si vous créez un modèle, vous souhaiterez probablement activer la protection du classeur pour empêcher les utilisateurs (ou vous !) de supprimer accidentellement des feuilles de calcul.
Déprotéger le classeur VBA
Pour déprotéger un classeur, utilisez simplement la ligne de code suivante :
1 | Classeurs("Livre1").Déprotéger |
Remarque : ce code ne fonctionnera que si le classeur était protégé sans pour autant Un mot de passe. S'il était protégé par un mot de passe, vous devez également saisir le mot de passe pour le déprotéger :
Déprotéger le classeur avec mot de passe
Cette ligne de code déprotégera un classeur qui a été protégé par un mot de passe :
1 | Classeurs("Book1").Unprotect Password:="password" |
ou vous pouvez omettre le mot de passe :=
1 | Classeurs("Livre1").Déprotéger le "mot de passe" |
Déprotéger ce classeur
Ce code déprotégera ThisWorkbook (ThisWorkbook est le classeur dans lequel le code en cours d'exécution est stocké. Il ne changera jamais).
1 | Ce classeur.Déprotéger |
ou déprotéger ThisWorkbook avec un mot de passe :
1 | ThisWorkbook.Unprotect "mot de passe" |
UnProtect ActiveWorkbook
Ce code déprotégera l'ActiveWorbook.
1 | ActiveWorkbook.Déprotéger |
ou déprotéger l'ActiveWorkbook avec un mot de passe :
1 | ActiveWorkbook.Déprotéger le "mot de passe" |
Déprotéger tous les classeurs ouverts
Ce code déprotégera tous les classeurs ouverts :
12345678 | Sous UnprotectAllOpenWorkbooks()Dim wb comme classeurPour chaque wb dans les classeurswb.DéprotégerWb suivantFin du sous-marin |
UnProtect Workbook - Sans connaître le mot de passe
Si vous devez déprotéger un classeur sans connaître le mot de passe, il existe plusieurs compléments pour vous aider. Je recommanderais Ribbon Commander.
Déprotéger toutes les feuilles du classeur
Après avoir déprotégé un classeur, vous souhaiterez peut-être également déprotéger toutes les feuilles du classeur. Voici une procédure qui déprotégera toutes les feuilles :
12345678 | Sous UnProtectWorkbookAndAllSheets()Dim ws As Feuille de calculActiveWorkbook.DéprotégerPour chaque ws dans les feuilles de calculws.DéprotégerProchainFin du sous-marin |
Protéger le classeur
Vous pouvez protéger les structures de classeur de la même manière que vous déprotégez.
Protéger le classeur sans mot de passe
Cette ligne de code protégera un classeur (pas de mot de passe)
1 | Classeurs("Livre1").Protéger |
Remarque : j'appliquerai souvent la protection des classeurs sans mot de passe, simplement pour empêcher accidentel modifications apportées aux classeurs.
Protéger le classeur avec un mot de passe
Ce code protégera la structure du classeur (avec un mot de passe)
1 | Classeurs("Livre1").Protéger le "mot de passe" |
ou:
1 | Classeurs("Book1").Protect Password:="password" |
Fichier Excel protégé par mot de passe
Au lieu de la protection du classeur, vous souhaiterez peut-être protéger par mot de passe un fichier Excel entier. Pour ce faire en utilisant VBA, enregistrez sous le classeur avec un mot de passe :
1 | Classeurs("Livre1").Enregistrer sous "mot de passe" |
Exemples de classeur Protéger / Déprotéger
Afficher toutes les feuilles de calcul dans le classeur protégé
Cette procédure déprotégera un classeur, masquera toutes les feuilles de calcul et reprotégera le classeur
12345678910 | Sub UnprotectWB_Unhide_All_Sheets()Dim ws As Feuille de calculActiveWorkbook.DéprotégerPour chaque ws dans les feuilles de calculws.Visible = xlFeuilleVisibleProchainActiveWorkbook.ProtectFin du sous-marin |
Protéger le classeur et toutes les feuilles
Cette procédure protégera toutes les feuilles de calcul d'un classeur, puis protégera le classeur :
1234567891011 | Sous ProtectWB_Protect_All_Sheets()Dim ws As Feuille de calculActiveWorkbook.DéprotégerPour chaque ws dans les feuilles de calculws.ProtectProchainActiveWorkbook.ProtectFin du sous-marin |
Vous pouvez également ajouter une protection par mot de passe :
1234567891011 | Sous-ProtectWB_Protect_All_Sheets_Pswrd()Dim ws As Feuille de calculActiveWorkbook.Déprotéger le "mot de passe"Pour chaque ws dans les feuilles de calculws.Protect "mot de passe"ProchainActiveWorkbook.Protect "mot de passe"Fin du sous-marin |