Saisie TextBox

Bonjour à tous,

J'utilise ce code pour limiter la saisie d'un TextBox à 8 chiffres de la façon suivante :

Private Sub SAP_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
SAP.MaxLength = 8
    If KeyCode > 64 And KeyCode < 96 Then
    MsgBox "Seules les valeurs numériques sont autorisées.", vbCritical, "Saisie d'un caractère alphabétique"
    SAP.Text = Left(SAP.Text, SAP.TextLength - 1)
    End If
End Sub

Mais je n'arrive pas à inclure un test du genre : s'il n'y a pas 8 caractères numériques saisis dans le TextBox, on avertit par un MsgBox que la saisie n'est pas correct et on reste sur le focus du TextBox tant que la saisie n'est pas correcte.

Merci d'avance pour vos réponses et bonne fin d'après-midi.

@+.

bonjour avec l'événement "exit" du textbox:

Private Sub SAP_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(Me.SAP.Value) < 8 Then
Cancel = True
MsgBox ("Merci de saisir 8 caractères!")
End If

End Sub

Bonsoir rv,

Merci pour ta réponse : c'est impeccable. Je n'arrivais pas à garder le focus sur le TextBox car j'avais oublié de mettre l'instruction :

Cancel = True

Petite question subsidiaire : peut-on faire passer le focus au TextBox suivant dès que les 8 chiffres sont saisis sans erreurs ?

Merci encore et bonne soirée.

Bonjour,

Merci de ne pas tenir compte de ma dernière question : j'ai trouvé.

Merci et bonne journée.

Il suffit de rajouter un if à ton code du post initial qui va compter

le nombre de caractère saisie et si il est égale à 8 alors on donne le focus au textbox suivant.

comme je ne sais pas à comment se nomme le textbox suivant, pour l'exemple mes textbox1 et texbox2:

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 TextBox1.MaxLength = 8

    If KeyCode > 64 And KeyCode < 96 Then
    MsgBox "Seules les valeurs numériques sont autorisées.", vbCritical, "Saisie d'un caractère alphabétique"
    TextBox1.Text = Left(TextBox1.Text, TextBox1.TextLength - 1)
    End If

    If Len(TextBox1.Value) = 8 Then TextBox2.SetFocus 'donne le focus au textbox2

End Sub

tiens nous au courant

EDIT: désolé j'étais en train d'écrire quand tu as posté....

Bonjour,

Merci pour ton retour.

En essayant tout seul de mon côté, j'ai procédé comme suit :

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  Integer)
 TextBox1.MaxLength = 8
 TextBox1.AutoTab = True

    If KeyCode > 64 And KeyCode < 96 Then
    MsgBox "Seules les valeurs numériques sont autorisées.", vbCritical, "Saisie d'un caractère alphabétique"
    TextBox1.Text = Left(TextBox1.Text, TextBox1.TextLength - 1)
    End If

End Sub

Dis-moi si c'est bon mais d'après mes tests cela semble fonctionner correctement.

Merci et bonne journée à toi.

c'est un autre moyen.

L'avantage du setfocus est qu'il permet de déterminer le contrôle qui doit avoir le focus qui parfois n'est pas forcément celui qui est juste après dans l'index en fonction des besoins.

Merci pour la confirmation et pour l'info.

Bon après-midi à toi et à tous.

Rechercher des sujets similaires à "saisie textbox"