Consulter les parametres de Worksheet.Protect

Bonjour,

Imaginons un fichier Excel, avec des feuilles dont certaines sont protégées, d'autres non,

et parmi les feuilles protégées, elles ne le sont pas toutes de la même manière

par exemple, une feuille ne permet pas le tri, mais permet le redimensionnement des colonnes

une autres feuilles permet le tri mais pas l’insertion de colonnes,....

voilà donc des protections de feuilles vraiment sur mesure en fonction de chaque besoin.

et bien sur, ce n'est pas moi qui ai créez le fichier, et je ne sais pas à l'avance comment chaque feuille est protégée

comment consulter simplement la manière dont est protégé chaque feuille?

Est-il possible "d'extraire/consulter" la fonction Worksheet.Protect de chaque feuille pour connaitre l'état de chacun de ses paramètres (si il sont false ou true)

le but étant d'obtenir quelque chose du genre : (pour chaque feuille)

With Sheets("Feuil1")
      .Protect Password:=mdp, Scenarios:=False, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
      AllowInsertingColumns:=False, AllowInsertingRows:=False, AllowInsertingHyperlinks:=False, AllowSorting:=True, AllowFiltering:=True, _
      AllowUsingPivotTables:=True
      .EnableSelection = xlNoRestrictions
End With

l'idée c'est vraiment de savoir comment chaque feuille est protégée sans même enlever la protection, juste en "questionnant" le fichier.

au cas où et pour relancer le topic, j'ai mis un petit fichier si cela peut aider à mieux comprendre

je vous remercie d'avance

7protect.xlsm (52.75 Ko)

Hello,

Il me semble que lorsque tu enlèves la protection manuellement et que tu l'as remet il te propose les derniers paramètres

R@g

C'est vrai,

mais quand il y a plus d'une vingtaines de feuilles, c'est un peu long

et puis il faut prendre un papier, pour savoir que cette feuille est protégée comme-ci, et l'autre comme-ça,...

je suis un peu feignant (donc intelligent)

il n'y a vraiment pas moyen d'obtenir ces infos en une seule fois pour toutes les feuilles rapidement?

Hello,

Quelques exemples, à faire pour tous les parametres et une boucle sur toutes els feuilles

If Sheets(1).ProtectDrawingObjects = true Then MsgBox "DrawingObjects ok "
If Sheets(1).ProtectContents = True Then MsgBox "Contents ok"
If Sheets(1).ProtectScenarios = True Then MsgBox "Scenarios ok"
If Sheets(1).Protection.AllowFormattingCells = False Then MsgBox "AllowFormattingCells ok"

R@g

ah oui voilà, pas bête du tout... ça va marcher

je vais écrire ça, le tester, et je te redit

Bonjour,

tu en as une bonne série aussi dans .Protection :

image

eric

Eriic

peux-tu m'expliquer où trouver ces informations?

Sinon j'ai écrit ce code :

un peu lourd quand même et avec un petit défaut que je compte bien résoudre en comptant le nombre de feuille avant de lancer l'interrogation

Sub test_protect()
'Macro permettant de tester la protection de chaque feuille du classeur

'd'abord créer une feuille qui récolte le résultat
Sheets.Add After:=ActiveSheet
Sheets("Feuil8").Select
Sheets("Feuil8").Move Before:=Sheets(1)
Sheets("Feuil8").Name = "Resultat"
Range("A1").Select

'création d'un petit tableau
Range("A2").Value = "DrawingObjects"
Range("A3").Value = "Contents"
Range("A4").Value = "Scenarios"
Range("A5").Value = "AllowFormattingCells"
Range("A6").Value = "AllowFormattingColumns"
Range("A7").Value = "AllowFormattingRows"
Range("A8").Value = "AllowInsertingColumns"
Range("A9").Value = "AllowInsertingRows"
Range("A10").Value = "AllowInsertingHyperlinks"
Range("A11").Value = "AllowDeletingColumns"
Range("A12").Value = "AllowDeletingRows"
Range("A13").Value = "AllowSorting"
Range("A14").Value = "AllowFiltering"
Range("A15").Value = "AllowUsingPivotTables"

Dim i As Integer
Dim j As Integer
Dim namesheet As String

j = ActiveWorkbook.Sheets.Count 'compte le nombre de feuille

'boucle qui pour chaque feuille test la nature de la protection
For i = 1 To j

Sheets("Resultat").Cells(1, i + 1).Value = Sheets(i).Name
'créer le titre de la colonne

If Sheets(i).ProtectDrawingObjects = True Then
Sheets("Resultat").Cells(2, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(2, i + 1).Value = "False"
End If
If Sheets(i).ProtectContents = True Then
Sheets("Resultat").Cells(3, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(3, i + 1).Value = "False"
End If
If Sheets(i).ProtectScenarios = True Then
Sheets("Resultat").Cells(4, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(4, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowFormattingCells = True Then
Sheets("Resultat").Cells(5, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(5, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowFormattingColumns = True Then
Sheets("Resultat").Cells(6, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(6, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowFormattingRows = True Then
Sheets("Resultat").Cells(7, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(7, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowInsertingColumns = True Then
Sheets("Resultat").Cells(8, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(8, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowInsertingRows = True Then
Sheets("Resultat").Cells(9, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(9, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowInsertingHyperlinks = True Then
Sheets("Resultat").Cells(10, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(10, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowDeletingColumns = True Then
Sheets("Resultat").Cells(11, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(11, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowDeletingRows = True Then
Sheets("Resultat").Cells(12, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(12, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowSorting = True Then
Sheets("Resultat").Cells(13, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(13, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowFiltering = True Then
Sheets("Resultat").Cells(14, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(14, i + 1).Value = "False"
End If
If Sheets(i).Protection.AllowUsingPivotTables = True Then
Sheets("Resultat").Cells(15, i + 1).Value = "True"
    Else: Sheets("Resultat").Cells(15, i + 1).Value = "False"
End If

Next i

End Sub

Voilà, si quelqu'un à mieux... je suis preneur

menu 'Affichage / fenêtre espions',
Cliquer-glisser l'expression voulue dedans :

image

eric

PS : plutôt que d'écrire :

        If Sheets(i).ProtectScenarios = True Then
            Sheets("Resultat").Cells(4, i + 1).Value = "True"
        Else: Sheets("Resultat").Cells(4, i + 1).Value = "False"
        End If

tu peux simplifier avec :

        Sheets("Resultat").Cells(4, i + 1).Value = Sheets(i).ProtectScenarios
Rechercher des sujets similaires à "consulter parametres worksheet protect"