OVH Cloud OVH Cloud

Setfocus

1 réponse
Avatar
Florian
Bonsoir, je désire que le curseur aille en cas de mauvaise saisie se
replacer
dans la zone de texte. Je pensais que cela fonctionnait avec Setfocus, mais
apparemment cela ne fonctionne pas.
Merci de m'aider
Flo riant

Private Sub TextBox1_AfterUpdate()
If IsNumeric(TextBox1.Value) = False Then
MsgBox TextBox1.Value & " n 'est pas une valeur numérique"
TextBox1.Value = ""
TextBox1.SetFocus
Else
[A1] = TextBox1
End If
End Sub

1 réponse

Avatar
michdenis
Bonjour Florian,

Voici je t'ai fait une fonction qui se charge de limiter :

A ) la saisie aux chiffres seulement.

B ) la saisie que de 1 séparateur décimal , virgule ou point
dans la boîte de saisie et ce d'après le système en vigueur
sur la machine.

C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.

D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même besoin.

Pour appeler la fonction pour chaque texbox voici le code à saisir :

----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)

End Sub
------------------

Voici la fonction à copier dans un module standard

------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)

Dim SepDec As String
SepDec = Application.International(xlDecimalSeparator)

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If

End Function
-------------------------------------


Salutations!




"Florian" a écrit dans le message de news:
Bonsoir, je désire que le curseur aille en cas de mauvaise saisie se
replacer
dans la zone de texte. Je pensais que cela fonctionnait avec Setfocus, mais
apparemment cela ne fonctionne pas.
Merci de m'aider
Flo riant

Private Sub TextBox1_AfterUpdate()
If IsNumeric(TextBox1.Value) = False Then
MsgBox TextBox1.Value & " n 'est pas une valeur numérique"
TextBox1.Value = ""
TextBox1.SetFocus
Else
[A1] = TextBox1
End If
End Sub