Validation dans les userform

siocnarf

XLDnaute Occasionnel
Bonjour,

Je suis à me créé un userform. Dans celui-ci je dois inscrire un username et un mot de passe. Pour chaque champs, je vérifie s'il y a eu une inscription dans le champs identification et mot de passe. Lors du chargement de mon userform, les erreurs de mes fonctions change apparaissent... Comment je peux faire pour que la vérification se fasse uniquement si le champs a été modifié?

En d'autres mots comment faire pour que la vérification n'ait pas lieu lors du chargement du userform mais plutôt lors du click de souris??

Code:
Private Sub txtPassword_Change()
[B]If txtPassword.Value = "" Then
    MsgBox ("Vous devez inscrire un mot de passe valable sur ce serveur!")
End If[/B]
StrPassword = txtPassword.Value

End Sub

Private Sub txtServername_Change()

End Sub

Private Sub txtUsername_Change()

[B]If Len(txtUsername.Value) > Len(txtServername.Value) Then
    MsgBox ("Vous devez inscrire un Identifiant valide sur ce serveur!")
End If[/B]
StrUsername = txtUsername.Value

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, _
  CloseMode As Integer)
  If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "SVP, utilisez le bouton!"
  End If
End Sub

Private Sub cmdCancel_Click()
    Canceled = True
    Hide
End Sub

Private Sub cmdOK_Click()

'En effectuant un clic on vérifie le mot de passe
If txtPassword.Value = "" Then
    MsgBox ("Vous devez inscrire un mot de passe valable sur ce serveur!")
End If

'En effectuant un clic on vérifie l'identifiant
If Len(txtUsername.Value) < Len(txtServername.Value) Then
    MsgBox ("Vous devez inscrire un Identifiant valide sur ce serveur!")
End If

Canceled = False
Hide

End Sub

Private Sub Image1_Click()

End Sub

Sub UserForm_Initialize()

'On fait apparaître la fenêtre au milieu de l'écran
Me.StartUpPosition = 2

txtServername.Value = StrServerName
txtUsername.Value = StrServerName & "\"

End Sub




Merci
 

jp14

XLDnaute Barbatruc
Re : Validation dans les userform

Bonsoir

Private Sub txtPassword_Change()
cette procédure est lancé chaque fois que l'utilisateur entre un carractère, ce qui n'est pas idéal pour contrôler un mot de passe.
Une piste en vérifiant la longueur du mot
Code:
If len(txtPassword) < len(StrServerName )  then exit sub
Puis on teste si le mot est correct
En rajoutant le code suivant
Code:
Private Sub txtPassword_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1) < Len(StrServerName ) Then
Cancel = True
Exit Sub
End If
End Sub

Cancel = true évite que le l'utilisateur change de textbox.

JP
 

Discussions similaires

Réponses
21
Affichages
1 K