Protéger par mdp l’exécution de plusieurs macros

Bonjour au forum,

Je cherche une solution efficace pour "centraliser" la gestion des exécutions de macros protégées par mdp.

J'ai effectivement, dans la plupart de mes fichiers Excel, un grand nombre de macros dont l'exécution est validée par mot de passe.

Pour l'instant, j'utilise ce type de code au début de chaque macros :

Option Explicit
Dim Mdp As String, i As Long, Ws As Worksheet

Sub Test()

 Mdp = Application.InputBox("Veuillez introduire votre mot de passe :")
If Mdp <> "Toto" Then MsgBox "Accès refusé !": Exit Sub

Application.ScreenUpdating = False

 ' ma macro

 Application.ScreenUpdating = True

 End Sub

Cette méthode présente plusieurs défauts pour moi, le principal étant que le mot de passe s'affiche en toute lettre.

À cela s'ajoute le nombre de ligne de code conséquent, car répété au début de chaque macros.

Auriez-vous une proposition de code ou une astuce, probablement en utilisant un UserForm pour avoir le paramètre PasswordChar="*", pour simplifier ce système ?

Amicalement,

Bonjour,

Il te suffit d'avoir un TextBox de la famille ActiveX ... pour avoir la propriété PasswordChar ...

Bonjour James007,

Merci pour ta réponse.

Mon idée était plutôt d'avoir un formulaire avec, par exemple, une liste déroulante contenant un choix de macros présentent dans mon fichier, et lorsque la sélection est faite, lancer celle-ci en cliquant sur un bouton OK ou annuler la procédure.

Pense-tu que c'est réalisable ?

Finalement j'ai réussi à faire ce que je voulais

Merci pour ton aide !

Félicitations ...

Pour le bénéfice des futurs lecteurs du Forum ... ce serait sympa de partager ta solution ,,,

Bonjour James007, le forum,

Ci-joint le code que j'ai écris pour mon fichier afin de gérer une "banque" de macros via un UserForm :

Option Explicit

'Bouton Annuler de l'UserForm
Private Sub Annuler_Click()
    Unload Me
End Sub

'Bouton qui permet d'agrandir l'UserForm pour dévoiler une gestion "Admin"
Private Sub Admin_Click()

If MotDePasse.Height = 362 Then
    MotDePasse.Height = 210
Else
    MotDePasse.Height = 362
End If
End Sub

'Bouton OK de l'UserForm
Private Sub Ok_Click()

Select Case ComboBox1.Text 'ComboBox "Utilisateur"
    Case "Macro1"
        If TextBox1.Value <> "mdp1" Then MsgBox "Accès refusé !" & Chr(10) & "Mot de passe non valide !", vbCritical, "***Erreur***": Exit Sub
        Call Macro1 'à insérer dans un module
        Unload Me
' ajouter autant de "Case" que de macros à présenter
    Case Else
        ComboBox1.Value = ""
End Select

Select Case ComboBox2.Text 'ComboBox "Admin", dévoilé via la procédure Admin_Click
    Case "Macro2"
        If TextBox2.Value <> "mdp2" Then MsgBox "Accès refusé !" & Chr(10) & "Mot de passe non valide !", vbCritical, "***Erreur***": Exit Sub
        Call Macro2 'à insérer dans un module
        Unload Me
    Case "Macro3"
        If TextBox2.Value <> "mdp3" Then MsgBox "Accès refusé !" & Chr(10) & "Mot de passe non valide !", vbCritical, "***Erreur***": Exit Sub
        Call Macro3 'à insérer dans un module
        Unload Me
    Case Else
        ComboBox2.Value = ""
End Select
End Sub

J'ai nommé 2 listes de macros, "Utilisateurs" et "Admin" dans une feuille "BD", puis j'ai associé chaque nom à la liste déroulante correspondante de l'UserForm via =RowSource.

En espérant que cela puisse aider

Nrev74

Bonjour Nico ...

Super Sympa de ta part de partager ta solution ... avec les lecteurs du Forum ...

Pour être honnête ... beaucoup ne le font pas ... Donc un GRAND MERCI ...

C'est normal, merci à toi pour tes encouragements !

Rechercher des sujets similaires à "proteger mdp execution macros"