VBA : détecter les feuilles protégées

Bonjour à tous,

Je cherche un code balayant les feuilles du classeur et

indiquant les feuilles protégées.

J'ai essayé le code ci-dessous

mais le "If" n'agit pas et protège les feuilles sans passer par le MsgBox.

Sub TestFeuilles()
Dim i%
    For i = 1 To Worksheets.Count
        If Worksheets(i).Protect = True Then
            MsgBox ("feuille protégée")
        End If
    Next
End Sub

Une idée ?

Bonne journée

Claude

Bonsoir Claude,

Ce code pourrait convenir, si ce n'est qu'il a un petit défaut, il ne signalera pas que l'onglet est protégé si "TOUTES" les cellules sont "déverrouillées"....

Mais dans ce cas, pourquoi protéger la feuille (bref, je pense un cas pas si fréquent que cela....)?

Sub protegee_or_not()
Dim Sh As Worksheet
For Each Sh In Sheets
    If Not Sh.Cells.AllowEdit Then
        MsgBox "Feuille : " & Sh.Name & " protégée"
    End If
Next Sh
End Sub

ou autre option, plus fiable :

Sub protegee_or_not()
Dim Sh As Worksheet
For Each Sh In Sheets
    If Sh.ProtectContents Then
        MsgBox "Feuille : " & Sh.Name & " protégée"
    End If
Next Sh
End Sub

Bonne soirée

Bonjour et merci cousinhub,

Voici à peu près ce que je compte mettre en place en reprenant ton 2ème code,

Sub protegee_or_not()
Dim Sh As Worksheet, Cpt As Byte, Rep$
        For Each Sh In Sheets
            If Sh.ProtectContents Then
                Cpt = Cpt + 1
            End If
        Next Sh
    If Cpt > 0 Then
        Rep = InputBox("Ce classeur contient " & Cpt & " feuille(s) protégée(s)" & Chr(10) & _
        "entrez le mot de passe pour déprotéger" & Chr(10) & Chr(10) & _
        "Si protection sans mot de passe, tapez un caractère quelconque")
        If Rep = "" Then Exit Sub

        For Each Sh In Sheets
            If Sh.ProtectContents Then
                On Error GoTo Fin
                Sh.Unprotect Password:=Rep
            End If
        Next Sh
    End If
Exit Sub
Fin: MsgBox ("mot de passe non valide !")
End Sub

vois-tu des "contre-indication" ?

j'ai fait quelques tests sans problème, mais peut-être on peux mieux faire ?

Amicalement

Claude

édit: il s'agit d'une macro qui sera dans "PERSONAL.XLSB"

Re-,

je pense que tu auras des problèmes, s'il n'y a pas de mot de passe....

Pourquoi imposer un caractère quelconque?

Rep reprendra ce caractère, et donc le mot de passe sera faux.....

Ceci, sans tester...

re,

J'impose un caractère car si rien, c'est Exit Sub

l'aide en ligne dit pour l'argument "mot de passe" :

Si la feuille ou le classeur n'est pas protégé par un mot de passe, cet argument est ignoré.

ci-joint fichier test

Claude

79test-feuilles.zip (14.16 Ko)
Rechercher des sujets similaires à "vba detecter feuilles protegees"