OVH Cloud OVH Cloud

Contrôler exécution macro

8 réponses
Avatar
Grégory
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui souhaiterai
cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory

8 réponses

Avatar
Jacky
Re...
Un truc simple...
En début de macro
'---------------
mdp = InputBox("Mot de passe", "Entrez le mot de passe")
If mdp <> "toto" Then Exit Sub
'la suite du code ici
'---
'---------
End Sub

Ps: T'as réussi à cacher tes lignes????

Salutations
JJ

"Grégory" a écrit dans le message de
news:
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui
souhaiterai

cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory


Avatar
michdenis
Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", , , , , , 2)
If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message de news:
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui souhaiterai
cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory
Avatar
Hervé
Bonsoir Grégory,
C'est possible, exemple simple :
Sub Test()
Dim MdP As String
MdP = InputBox("Entrez le mot de passe ?", "Mot de passe")
If MdP <> "Mon_Mot" Then
MsgBox "Vous n'avez pas accès à ma jolie proc. !"
Exit Sub
End If
'suite de ta proc.
End Sub

Ensuite, tu vas dans "Outils", "Propriétés de VBAProject..." et dans
l'onglet "Protection" tu coche et entre un mot de passe, puis tu confirme,
enregistre et ferme ton classeur. A la réouverture, tu dois indiquer un mot
de passe pour avoir accès au projet VBA ce qui masque ton mot de passe aux
autres.

Hervé.

"Grégory" a écrit dans le message de
news:
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui
souhaiterai
cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory


Avatar
Jacky
Re...
Bien mieux que mon code, mais sans Exit Sub après Call MaMacro, elle va
boucler 3 fois.

Salutations
JJ

"michdenis" a écrit dans le message de
news:upD3$
Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", , , ,
, , 2)

If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message de
news:

Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui
souhaiterai

cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory




Avatar
michdenis
Bonjour Jacky,

Je te fais confiance ... tu as dit 3 fois ? Vendu.

;-))


Salutations!


"Jacky" a écrit dans le message de news: %
Re...
Bien mieux que mon code, mais sans Exit Sub après Call MaMacro, elle va
boucler 3 fois.

Salutations
JJ

"michdenis" a écrit dans le message de
news:upD3$
Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", , , ,
, , 2)

If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message de
news:

Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui
souhaiterai

cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory




Avatar
Grégory
Merci à tous pour votre aide!
Que seraient mes macros sans vous...

"michdenis" wrote:

Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", , , , , , 2)
If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message de news:
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui souhaiterai
cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory





Avatar
Grégory
Je me permet de suggérer une petite optimisation... (pour une fois que je
peux!)

Juste après le "Call MaMacro", faire un "GoTo" vers le "End Sub" afin
d'éviter de boucler encore deux fois si l'utilisateur rentre le bon mot de
passe au 1er essai (A=3 et on demande le pwd jusqu'à ce que A=0).

En espérant que ça serve à d'autres!
Grégory


Merci à tous pour votre aide!
Que seraient mes macros sans vous...

"michdenis" wrote:

Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", , , , , , 2)
If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message de news:
Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui souhaiterai
cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory







Avatar
Jacky
Re...
Un Exit Sub ira mieux, comme déjà dit plus haut.
;o))
JJ

"Grégory" a écrit dans le message de
news:
Je me permet de suggérer une petite optimisation... (pour une fois que je
peux!)

Juste après le "Call MaMacro", faire un "GoTo" vers le "End Sub" afin
d'éviter de boucler encore deux fois si l'utilisateur rentre le bon mot de
passe au 1er essai (A=3 et on demande le pwd jusqu'à ce que A=0).

En espérant que ça serve à d'autres!
Grégory


Merci à tous pour votre aide!
Que seraient mes macros sans vous...

"michdenis" wrote:

Bonjour Grégory,

voici un exemple :

'----------------------
Sub MotDePasse()

Dim LaPasse As String, A As Integer, Res As String
LaPasse = "denis"
A = 3
Do
Res = Application.InputBox("Mot de passe", A & " tentatives...", ,
, , , , 2)



If Res = "Faux" Then Exit Sub
If Res = LaPasse Then
Call MaMacro
Else
MsgBox "Ce mot de passe est faux. Réessayer"
End If
A = A - 1
Loop Until A = 0

End Sub
'----------------------
Sub MaMacro()
MsgBox "bonjour"
End Sub
'----------------------


Salutations!




"Grégory" a écrit dans le message
de news:



Bonjour,

Est-il possible de protéger l'exécution d'une macro?

Je voudrai pouvoir demander un mot de passe à l'utilisateur qui
souhaiterai



cliquer sur le bouton d'exécution de ma macro...
S'il est faux, rien ne se passe évidemment!

Merci de votre aide,
Grégory