Oter et mettre protection sur un classeur, pb d’erreur

Résolu/Fermé
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 12 août 2021 à 09:59
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 12 août 2021 à 17:47
Bonjour à tous,

Je suis sous wort 2003,

J’ai mis en place deux petites macro pour réaliser les fonctions mise en place et retrait protection :

Sub retrait_protection_doc()
ActiveDocument.Unprotect Password:="xxxxxx"
Call couleur_papier
End Sub

Sub protection_doc()
Call couleur_papier_b
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="xxxxxx"
End Sub

Mon problème :

Si le classeur est protégé et que je lance par erreur la procédure de protection : il y a une erreur

Le même problème pour le retrait protection.

Avez-vous une solution à ce problème ?

Merci d’avance
Bien cordialement

2 réponses

m@rina Messages postés 20089 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 27 avril 2024 11 272
12 août 2021 à 17:34
Bonjour

Oui il y a une erreur car si le doc est protégé, on ne peut plus le protéger.

Il faut mettre la condition :

Sub protection_doc()
If ActiveDocument.ProtectionType = wdNoProtection Then
Call couleur_papier_b
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="xxxxxx"
Else msgbox "Le document est déjà protégé"
End Sub


et l'inverse pour l'autre macro.

m@rina


1
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
12 août 2021 à 17:47
Bonjour,

Je vient juste de voir ton message.
Merci pour la réponse, je viens juste de trouver la solution, mais ta proposition est bien mieux avec le petit message.

Bien cordialement
0
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
12 août 2021 à 17:44
Bonjour,

A force de rechercher j'ai trouvé la solution,

'Retrait protection du document
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:="xxxxxx"
' xxxxx = mots de passe
End If

'mise en place protection du document.
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="xxxxxx"
' xxxxx = mots de passe
End If

Bien cordialement
0