VBA – Protection des Classeurs (Protection / Ôter la Protection par Mot de Passe)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Excel vous offre la possibilité de protéger vos classeurs Excel contre les modifications. Ce tutoriel vous montrera comment protéger ou déprotéger la structure d’un classeur à l’aide de VBA.

Protection des Classeurs VBA

La protection des classeurs VBA vous permet de verrouiller la structure du classeur. Lorsqu’un classeur est protégé, les utilisateurs ne peuvent pas ajouter, supprimer, masquer/démasquer ou protéger/déprotéger les feuilles de calcul. Si vous construisez un modèle, vous souhaitez probablement activer la protection des classeurs pour éviter que les utilisateurs (ou vous-même!) ne suppriment accidentellement des feuilles de calcul.

Enlever la Protection du classeur VBA

Pour enlever la protection d’un classeur, il suffit d’utiliser la ligne de code suivante :

Workbooks("Classeur1").Unprotect

Remarque : ce code ne fonctionne que si le classeur a été protégé sans mot de passe. S’il a été protégé par un mot de passe, vous devez également entrer le mot de passe pour ôter la protection:

Enlever la Protection d’un Classeur avec un Mot de Passe

Cette ligne de code va déprotéger un classeur qui a été protégé par un mot de passe :

Workbooks("Classeur1").Unprotect Password:="Mot de Passe"

ou vous pouvez omettre Password:=

Classeurs("Classeur1").Unprotect "mot de passe"

Enlever la Protection de l’objet « ThisWorkbook »

Ce code va enlever la protection de ThisWorkbook (ThisWorkbook est le classeur où le code en cours d’exécution est stocké. Il ne sera jamais modifié).

ThisWorkbook.Unprotect

ou, dans le cas d’une protection avec un mot de passe :

ThisWorkbook.Unprotect "Mot de Passe"

Enlever la Protection de l’objet « ActiveWorkbook »

Ce code va enlever la protection du classeur actif :

ActiveWorkbook.Unprotect

ou, dans le cas d’une protection avec un mot de passe :

ActiveWorkbook.Unprotect "Mot de Passe"

Enlever la Protection sur Tous les Classeurs Ouverts

Ce code va enlever la protection sur tous les classeurs ouverts :

Sub EnleverProtectionTousLesClasseurs()
    Dim cl As Workbook
    
    For Each cl In Workbooks
        cl.Unprotect
    Next cl

End Sub

Enlever la Protection d’un Classeur – Mot de Passe Perdu

Si vous avez besoin d’enlever la protection d’un classeur sans connaître le mot de passe, il existe plusieurs modules complémentaires pour vous aider. Je recommande Ribbon Commander.

Ôter la Protection de Toutes les Feuilles d’un Classeur

Après avoir enlevé la protection d’un classeur, vous pouvez aussi vouloir déprotéger toutes les feuilles du classeur. Voici une procédure qui permet de le faire :

Sub EnleverProtectionClasseurEtToutesLesFeuilles()
    Dim fc As Worksheet
    
    ActiveWorkbook.Unprotect
    For Each fc In Worksheets
        fc.Unprotect
    Next
End Sub

Protéger le Classeur

Vous pouvez protéger les structures des classeurs de la même manière que vous les déverrouillez.

Protéger le Classeur Sans Mot de Passe

La ligne de code suivante protège un classeur (sans mot de passe)

Workbooks("Classeur1").Protect

Note : J’applique souvent la protection des classeurs sans mot de passe, simplement pour éviter les modifications accidentelles des classeurs.

Protéger le Classeur Avec un Mot de Passe

Ce code protégera la structure du classeur (avec un mot de passe)

Workbooks("Classeur1").Protect "Mot de Passe"

ou

Workbooks("Classeur1").Protect Password:="Mot de Passe"

Protection par Mot de Passe d’un Fichier Excel

Au lieu de protéger un classeur, vous pouvez protéger par mot de passe un fichier Excel entier. Pour ce faire, en utilisant VBA, enregistrez le classeur avec un mot de passe :

Workbooks("Classeur1").SaveAs "Mot de Passe"

Exemples de Protection/Déprotection de Classeurs

Déverrouillage de Toutes les Feuilles de Calcul du Classeur Protégé

Cette procédure permet d’enlever la protection d’un classeur, de masquer toutes les feuilles de calcul et de protéger à nouveau le classeur

Sub EnleverProtectionClasseur_AfficherToutesLesFeuilles()
    Dim fc As Worksheet
    
    ActiveWorkbook.Unprotect
    For Each fc In Worksheets
        fc.Visible = xlSheetVisible
    Next fc
    
    ActiveWorkbook.Protect
End Sub

Protéger le Classeur et Toutes les Feuilles de Calcul

Cette procédure permet de protéger toutes les feuilles de calcul d’un classeur, puis de protéger le classeur :

Sub ProtégerClasseur_ProtégerToutesLesFeuilles()
    Dim fc As Worksheet
    
    ActiveWorkbook.Unprotect
    
    For Each fc In Worksheets
        fc.Protect
    Next fc
    
    ActiveWorkbook.Protect
End Sub

Vous pouvez également ajouter une protection par mot de passe :

Sub ProtégerClasseur_ProtégerToutesLesFeuilles_MotDePasse()
    Dim fc As Worksheet
    
    ActiveWorkbook.Unprotect "Mot de Passe"
    
    For Each fc In Worksheets
        fc.Protect "Mot de Passe"
    Next
    
    ActiveWorkbook.Protect "Mot de Passe"
End Sub
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA