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

Résolu
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -
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 23885 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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 415 Date d'inscription   Statut Membre Dernière intervention   11
 
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 415 Date d'inscription   Statut Membre Dernière intervention   11
 
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