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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Florian@toto.fr> a écrit dans le message de news:usVKKCkUEHA.2840@TK2MSFTNGP11.phx.gbl...
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
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