Voudrais écrire code VBA pour mot de passe

baguidi -  
 baguidi -
Bonjour,

Mon désir est décrire un code VBA sous excel qui me permettent de canaliser la saisie de mon mot de passe à au plus 3 essais.
j'ai écris un semblant de code mais seulement il ne fonctionne pas comme prévu certainement parce qu'il y a des coquilles dedans. Aidez moi s'il vous plait les gars.

Je vous suis toujours reconnaissant car j'ai déjà reçu plusieurs aides de votre part

je vous adore les potes.

je vous donne le lien qui vous permettra de consulter mon code. Il est joint par le site cijoint.fr


http://www.cijoint.fr/cij755825933214.xls
A voir également:

3 réponses

le père
 
Bonjour

Petites coquilles :
je suppose que tu voulais écrire "If rep=vbRetry" Then au lieu de "If vbRetry Then"
ton "encore" ne sert à rien

Grosse boulette :
tu fais de la réentrance, visiblement sans le vouloir.
Quand on clique sur le bouton, on rentre dans ton sub Cmd_validMotPasse_Click. Quand le code à été testé et refusé, tu réaffiches la feuille mais l'exécution de Cmd_validMotPasse_Click n'est pas terminée. Si l'utilisateur clique à nouveau, on re-rentre dans Cmd_validMotPasse_Click ! on remet le compteur de cette nouvelle instance à 1.
On peut s'en sortir ( de ton programme) en fermant la fenêtre au lieu de cliquer sur le bouton.

Il faut absolument que tu mémorises ton compteur dans une variable qui est déclarée hors de ton sub
Il ne faut pas faire de show dans ton sub
Il ne faut pas faire de boucle dans ton sub
0
baguidi
 
Salut le père,

j'ai bien compris tes remarques et j'ai rectifié les coquilles mais il semble que j'ai encore besoin de quelques conseils car le programme ne tourne pas rond jusqu'a présent. j'ai enlévé la boucle et j'ai mis une instruction if mais il semble que sa cloche toujours. voici le nouveau code.

Dim ESSAI As Integer
Private Sub Cmd_validMotPasse_Click()

' Déclaration des variables mémoires

Dim compteur As Integer

Dim mopass As String

' Permet à la variable de convertir la valeur saisie en textbox2 en minuscule
mopass = StrConv(TextBox2, vbLowerCase)


If mopass = "bag" Then
UserForm2.Show
Unload Me
End If

'met la variable à 0

ESSAI = 0

' ceci permet de rentrer dans la boucle une fois que l'essai n'est pas bonne


If compteur < 3 And mopass <> "bag" Then



ESSAI = ESSAI + 1

rep = MsgBox("essai N°" & " " & ESSAI & " " & " mot de passe invalide voulez-vous reprendre", vbRetryCancel + vbInformation, "Projet ibrah")

End If

If rep = vbRetry Then

' ESSAI donne sa valeur à compteur pourqu'il le compare à 3 juste à l'entrée de l'instruction
compteur = ESSAI


TextBox2 = ""


Else


End If


If compteur = 3 Then
MsgBox " Violation du Mot de Passe - vous êtes à votre troisième essai", vbInformation, "Projet ibrah"

End If

End Sub
0
baguidi
 
Bonjour le père,

je viens une fois encore relancer ma question a votre niveau. J'ai juste refait le code en corrigeant les qelques erreurs mais j'ai toujours une difficulté à avoir ce que je veux. Je sollicite toujours votre concours.

Merci de me comprendre.



Dim ESSAI As Integer
Private Sub Cmd_validMotPasse_Click()

' Déclaration des variables mémoires

Dim compteur As Integer

Dim mopass As String

' Permet à la variable de convertir la valeur saisie en textbox2 en minuscule
mopass = StrConv(TextBox2, vbLowerCase)


If mopass = "bag" Then
UserForm2.Show
Unload Me
End If

'met la variable à 0

ESSAI = 0

' ceci permet de rentrer dans la boucle une fois que l'essai n'est pas bonne


If compteur < 3 And mopass <> "bag" Then



ESSAI = ESSAI + 1

rep = MsgBox("essai N°" & " " & ESSAI & " " & " mot de passe invalide voulez-vous reprendre", vbRetryCancel + vbInformation, "Projet ibrah")

End If

If rep = vbRetry Then

' ESSAI donne sa valeur à compteur pourqu'il le compare à 3 juste à l'entrée de l'instruction
compteur = ESSAI


TextBox2 = ""


Else


End If


If compteur = 3 Then
MsgBox " Violation du Mot de Passe - vous êtes à votre troisième essai", vbInformation, "Projet ibrah"

End If

End Sub
0