Monsieur Excel
Pour tout savoir faire sur Excel !

10 septembre 2009

Protection d'une série de feuilles

Quelquefois, on aimerait bien pouvoir protéger ou déprotéger toute une série de feuilles d’un seul coup. Pour atteindre cet objectif, une macro est bien évidemment nécessaire.

Nous avons à cet effet une feuille appelée « Protection », à laquelle nous aurons logiquement attribué le statut « Very hidden », dans laquelle apparaît la liste des feuilles du classeur avec en colonne B le statut souhaité et, en colonne C, le mot de passe.

La liste des feuilles du classeur a pu être obtenue grâce à la solution proposée le 20 juin 2009 dans ce blog.

La macro reproduite ci-dessous et activée par le bouton « Protection » fait le travail !

Remarque – L’article du 24 juin vous permettra de comprendre pourquoi nous affichons le message « Faites un recalcul complet ! » quand le nom de la feuille active n’est pas correct, donc quand la liste créée en colonne A de la feuille « Protection » n’est pas actualisée.

1 Commentaire(s):

  • Bonjour,

    Votre macro est intéressante pour moi dans le fait qu'elle me permet de protéger toutes les feuilles d'un classeur par le clic sur un seul bouton.

    Lorsque je lance cette macro (par un clic donc) les feuilles de mon classeur sont bien verrouillées car la valeur de la colonne B est "oui".
    Cependant après avoir protéger les feuilles lorsque je change la valeur par "non" et que je clique sur le bouton les feuilles ne sont pas déprotégées.

    Est-ce que c'est normal ou bien est-ce que j'ai raté quelque chose ?

    Merci.

    N.B Pour pouvoir déprotéger les feuilles j'ai créé un 2eme bouton avec pour code
    Private Sub CommandButton2_Click()
    Dim I As Integer
    For I = 1 To Sheets.Count
    Sheets(I).Activate
    If Sheets(I).Name = "protection"_ Then GoTo Fin
    If ActiveSheet.Name <>_ Worksheets("protection").Range("A"_ & I + 1).Value Then MsgBox "Faites un recalcul complet !": Exit Sub
    If_
    Worksheets("protection").Range("B"_ & I + 1).Value = "non" Then
    ActiveSheet.Unprotect_
    (Worksheets("protection").Range("C" & I + 1).Value)
    End If
    Fin:
    Next I
    End Sub

    By Blogger Pierre, sur 9:34 AM  

Enregistrer un commentaire

<< Accueil