VBA Protéger / Déprotéger les Feuilles de Calcul

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

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