conditionner exécution vba par MDP

patouman

XLDnaute Occasionnel
Bonjour, je pense avoir fais une erreur dans ma vba car je n'obtiens pas le résultat escompté. Je m'explique : j'ai un vba qui protege ou deprotege toutes les feuilles de mon classeur mais celle ci s'execute sans me demander un mot de passe.
Et justement je souhaite qu'un MDP soit obligatoire pour son éxécution


merci par avance

mon code :

Sub Protege(Optional Y)
Dim PWd$
PWd = "toto"
For i = 1 To Worksheets.Count
With Worksheets(i)
If IsMissing(Y) Then
If .ProtectContents = False Then .Protect PWd
Else
If .ProtectContents Then .Unprotect PWd
End If
End With
Next
End Sub

Sub Deprotege()
Protege 0
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : conditionner exécution vba par MDP

Bonjour

sur ta ligne

If .ProtectContents Then .Unprotect PWd

retire PWd

If .ProtectContents Then .Unprotect

et là elle te demandera le mot de passe car sinon tu l'écris dans la macro donc la feuille se déprotège
 

patouman

XLDnaute Occasionnel
Re : conditionner exécution vba par MDP

merci pascal pour ta réponse
je suis presque au but
sauf qu'un probleme apparait
en effet en supprimant PWd comme tu me le dis, lors de la déprotection il me demande le mot de passe pour chaque feuille, alors que je voudrais qu'il agisse de la meme maniere que pour la protection, c'est à dire déprotection de toutes les feuilles d'un seul coup

merci encore
 

Pierrot93

XLDnaute Barbatruc
Re : conditionner exécution vba par MDP

Bonjour Patouman, Pascal:)

regarde peut être ceci, si cela peut t'aider :
Code:
Sub protectionfeuille()
Dim mdp As String, ws As Worksheet
mdp = InputBox("Saisissez le mot de passe")
If mdp <> "toto" Then Exit Sub
For Each ws In Worksheets
    ws.Protect mdp
Next ws
End Sub


Sub deprotectionfeuille()
Dim mdp As String, ws As Worksheet
mdp = InputBox("Saisissez le mot de passe")
If mdp <> "toto" Then Exit Sub
For Each ws In Worksheets
    ws.Protect mdp
Next ws
End Sub

bon après midi
@+
 

patouman

XLDnaute Occasionnel
Re : conditionner exécution vba par MDP

désolé j'ai trouvé Pierrot

une toute petite erreur s est glissée ds ton code
le voici corrigé

Sub protectionfeuille()
Dim mdp As String, ws As Worksheet
mdp = InputBox("Saisissez le mot de passe")
If mdp <> "blabla" Then Exit Sub
For Each ws In Worksheets
ws.Protect mdp
Next ws
End Sub


Sub deprotectionfeuille()
Dim mdp As String, ws As Worksheet
mdp = InputBox("Saisissez le mot de passe")
If mdp <> "blabla" Then Exit Sub
For Each ws In Worksheets
ws.Unprotect mdp
Next ws
End Sub


Merci encore et a bientot
 

Discussions similaires