XL 2016 Protéger déprotéger classeur avec bouton - Bug

ALE37

XLDnaute Junior
Bonjour le forum, j'ai un bug sur l'utilisation de cette macro qui consiste à protéger et déprotéger à l'aide d'un bouton un classeur.
La protection fonctionne mais pas la déprotection. D'avance merci de votre aide.

Sub protect_classeur()
Application.ScreenUpdating = False
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then
MsgBox "Mot de passe incorrect", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If
ThisWorkbook.Unprotect "toto"
With Worksheets("BD")
.Visible = xlSheetVisible
.Activate
.Unprotect "toto"
End With
ThisWorkbook.Protect "toto"
End Sub
 
Solution
Bonsoir,

Je pense que ta macro déprotège et protège le classeur à la suite, donc tu as l'impression que seul la protection fonctionne mais la déprotection fonctionne aussi...

En ajoutant un test pour savoir si le classeur est protégé et faire l'action inverse devrait fonctionner :
VB:
Sub protect_classeur()
Application.ScreenUpdating = False
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then
MsgBox "Mot de passe incorrect", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If
If ThisWorkbook.ProtectStructure Or ThisWorkbook.ProtectWindows Then
ThisWorkbook.Unprotect "toto"
With Worksheets("BD")
.Visible = xlSheetVisible
.Activate
.Unprotect "toto"
End With
else
ThisWorkbook.Protect...

BI4ol

XLDnaute Nouveau
Bonsoir,

Je pense que ta macro déprotège et protège le classeur à la suite, donc tu as l'impression que seul la protection fonctionne mais la déprotection fonctionne aussi...

En ajoutant un test pour savoir si le classeur est protégé et faire l'action inverse devrait fonctionner :
VB:
Sub protect_classeur()
Application.ScreenUpdating = False
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then
MsgBox "Mot de passe incorrect", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If
If ThisWorkbook.ProtectStructure Or ThisWorkbook.ProtectWindows Then
ThisWorkbook.Unprotect "toto"
With Worksheets("BD")
.Visible = xlSheetVisible
.Activate
.Unprotect "toto"
End With
else
ThisWorkbook.Protect "toto"
End If
End Sub

A essayer.
BI4ol
 

ALE37

XLDnaute Junior
Bonsoir,

Je pense que ta macro déprotège et protège le classeur à la suite, donc tu as l'impression que seul la protection fonctionne mais la déprotection fonctionne aussi...

En ajoutant un test pour savoir si le classeur est protégé et faire l'action inverse devrait fonctionner :
VB:
Sub protect_classeur()
Application.ScreenUpdating = False
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then
MsgBox "Mot de passe incorrect", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If
If ThisWorkbook.ProtectStructure Or ThisWorkbook.ProtectWindows Then
ThisWorkbook.Unprotect "toto"
With Worksheets("BD")
.Visible = xlSheetVisible
.Activate
.Unprotect "toto"
End With
else
ThisWorkbook.Protect "toto"
End If
End Sub

A essayer.
BI4ol
Bonsoir,

Je pense que ta macro déprotège et protège le classeur à la suite, donc tu as l'impression que seul la protection fonctionne mais la déprotection fonctionne aussi...

En ajoutant un test pour savoir si le classeur est protégé et faire l'action inverse devrait fonctionner :
VB:
Sub protect_classeur()
Application.ScreenUpdating = False
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then
MsgBox "Mot de passe incorrect", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If
If ThisWorkbook.ProtectStructure Or ThisWorkbook.ProtectWindows Then
ThisWorkbook.Unprotect "toto"
With Worksheets("BD")
.Visible = xlSheetVisible
.Activate
.Unprotect "toto"
End With
else
ThisWorkbook.Protect "toto"
End If
End Sub

A essayer.
BI4ol
Bonsoir Bl4ol, la solution est Nickel! Merci pour ton aide.
 

Discussions similaires

Réponses
5
Affichages
410
Compte Supprimé 979
C
Réponses
5
Affichages
1 K

Statistiques des forums

Discussions
312 249
Messages
2 086 598
Membres
103 253
dernier inscrit
alscanv974