Empêcher d'entrer 2 fois le caractère virugule dans une TextBox

SERIEUXETCOOL

XLDnaute Occasionnel
Bonjour le Forum,

Je développe une Macro et je rencontre actuellement un petit désagrément. J'ai une TextBox ou je filtre les caractères entrés uniquement aux valeurs suivantes "0123456789,"

J'y suis parvenu, mais je ne parviens pas à empêcher de saisir 2 fois le caractère virgule. En effet on peut utiliser la virgule lorsque l'on tape un chiffre, mais on ne peut l'utiliser qu'une seule fois !!!

Si quelqu'un peut me conseiller.

Voici le code utilisé :

Code:
Private Sub TbxValeurLibre_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii <> 44 And KeyAscii <> 48 And KeyAscii <> 49 And KeyAscii <> 50 And KeyAscii <> 51 And KeyAscii <> 52 And KeyAscii <> 53 And KeyAscii <> 54 And KeyAscii <> 55 And KeyAscii <> 56 And KeyAscii <> 57 Then 'Filtre les valeurs
KeyAscii = 127
End If

End Sub


Cordialement,

André
 

roro69

XLDnaute Impliqué
Re : Empêcher d'entrer 2 fois le caractère virugule dans une TextBox

Bonjour
voici avec un filtre pour savoir si la virgule à déjà été tapé:


Private Sub TbxValeurLibre_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or TbxValeurLibre.SelStart > 0 And Chr(KeyAscii) = "-" _
Or InStr(TbxValeurLibre.Value, ",") <> 0 And Chr(KeyAscii) = "," Then KeyAscii = 0: Beep
End If

A++
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Empêcher d'entrer 2 fois le caractère virugule dans une TextBox

bonjour serieuxetcool, roro69:):)
un code de l'ami pierrot:):)
3 chiffres maxi apres la virgule a adapter

Code:
Dim s As String
s = Mid(txt, 1, SelStart) & Chr(KeyAscii) & Mid(txt, SelStart + 1)
If KeyAscii = 46 Then KeyAscii = 44
If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If Not IsNumeric(s) Then KeyAscii = 0: Exit Sub
If InStr(s, ",") > 0 Then If Len(s) - InStr(s, ",") > 2 Then KeyAscii = 0


ps bonjour Hasco:):)
attention dans l'exemple ma textbox se nomme txt
 
Dernière édition:
G

Guest

Guest
Re : Empêcher d'entrer 2 fois le caractère virugule dans une TextBox

Bonjour,

Ce que j'utilise dans ces cas là:
Code:
Private Sub TbxValeurLibre_KeyPress(ByVal KeyAscii As 
MSForms.ReturnInteger)
 Select Case KeyAscii
   Case 48 To 57 ' chiffres on ne fait rien
   Case 44 'virgule on vérifie sa présence dans le textbox
    If InStr(1, TbxValeurLibre.Text, ",") > 0 Then KeyAscii = 127
   Case 46 'Remplacement du point par la virgule
          If InStr(1, TbxValeurLibre.Text, ",") > 0 Then KeyAscii = 127 Else KeyAscii=44
   Case Else: KeyAscii = 127 ' en général je mets 0
 End If
End Sub

A+
 
Dernière modification par un modérateur:

Statistiques des forums

Discussions
294 210
Messages
1 936 894
Membres
188 098
dernier inscrit
flow77