mazuno
XLDnaute Nouveau
voila, je crois que tout est dans le titre :
j'ai une macro qui permet de protéger/déprotéger toutes les feuilles de mon classeur
le problème est que le password est écrit en dur dans le code, et mon boss aimerai pouvoir éviter cette contrainte ^^
j'ai cherché des codes touts faits mais ils sont tous écrits avec le pass dans le code :/
quelqu'un connais un moyen ?
MERCI d'avance
je vous passe le code de ma macro au cas ou...
j'ai une macro qui permet de protéger/déprotéger toutes les feuilles de mon classeur
le problème est que le password est écrit en dur dans le code, et mon boss aimerai pouvoir éviter cette contrainte ^^
j'ai cherché des codes touts faits mais ils sont tous écrits avec le pass dans le code :/
quelqu'un connais un moyen ?
MERCI d'avance
je vous passe le code de ma macro au cas ou...
Code:
Dim PWd$
Dim PwAdmin$
Public PassEntre ' déclaration en mode public car utilisée dans la boite de dialogue SaisiePWd
Public Function WsLock(Optional y)
' fonction appelée depuis les macros Proteger et DeProteger, ne pas lancer à la main!
' selon la macro qui l'a appelée, protège ou enleve la protection sur toutes les feuilles du classeur
PWd = "aaa" ' <--- définir le mot de passe pour la protection ici
PwAdmin = "zzz"
Application.ScreenUpdating = False 'on gèle l'affichage
'protection :
If IsMissing(y) Then ' si WsLock a été appelée sans argument (donc depuis proteger)
For i = 1 To Worksheets.Count
Worksheets(i).EnableOutlining = True
Worksheets(i).Protect PWd, userInterfaceOnly:=True ' on protège chaque feuille
Next
WsLock = 1
Application.EnableEvents = True
'déprotection :
Else ' sinon on déprotège :
SaisiePWd.Show ' apparition de la fenetre qui demande le mot de passe
If PassEntre = PWd Then ' si le pass est correct on unlock toutes les feuilles
For i = 1 To Worksheets.Count
Worksheets(i).Unprotect PWd
Next
PassEntre = "" ' on réinitialise PassEntre car sinon il est gardé en mémoire
WsLock = 2
ElseIf PassEntre = PwAdmin Then 'si on a entré le pass admin
For i = 1 To Worksheets.Count
Worksheets(i).Unprotect PWd
Next
PassEntre = "" ' on réinitialise PassEntre car sinon il est gardé en mémoire
WsLock = 3 'résultat pour password admin
If y = 0 Then
Application.EnableEvents = False
End If
Else
WsLock = 0
MsgBox "mot de passe incorrect"
End If
End If
Application.ScreenUpdating = True 'on dégèle l'affichage
End Function
Sub DeProteger()
'macro lancée depuis un bouton ou un raccourcis
'déprotège toutes les feuilles
WsLock (1)
End Sub
Sub Proteger()
'macro lancée depuis un bouton ou un raccourcis
'protège toutes les feuilles
WsLock
End Sub