Virgule

76cacash Messages postés 22 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 août 2006 - 17 juil. 2006 à 10:14
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 18 juil. 2006 à 15:39
Boujour a tous

voila je vien de faire ce petit programme afin de permettre de taper que des numero dans la textbox mais j'ai un probléme avec la virgule car on peut la mettre plusieur foi
si quelqu'un aurai une solution
merci
If Asc(e.KeyChar) Keys.Back Or Asc(e.KeyChar) 45 Or Asc(e.KeyChar) = 46 Then
            Exit Sub
        End If
        If IsNumeric(e.KeyChar) = False Then
            e.Handled = True
            Exit Sub
        End If

6 réponses

cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
17 juil. 2006 à 10:47
Teste si la virgule est déjà présente dans ton TextBox.

If TextBox1.Text.IndexOf(",") = -1 Then
....
   End Sub
End If
0
76cacash Messages postés 22 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 août 2006
17 juil. 2006 à 10:52
non ca ne fonctionne pas
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
17 juil. 2006 à 11:44
Faut faire un masque de saisie
Place ce code dans un module
'Permet d'écrire des sommes, des montants des chiffres, autorise la virgule mais ne permet pas les lettres
Public Function MaskNumeric(KeyAscii As Integer) As Integer
    'Dans le Keypress du controle: KeyAscii = MaskNumeric(KeyAscii)
    If (KeyAscii < 48 Or KeyAscii > 57) Then 'Place Ascii de 0123456789
        Select Case KeyAscii
            Case Is = 8
                MaskNumeric = 8   'Ascii de la touche Del
            Case Is = 44 'Ascii de la virgule
                MaskNumeric = 46 'transforme la virgule en point
            Case Is = 46 'Ascii du point
                MaskNumeric = 46 'le pt reste le pt
            Case Else: MaskNumeric = 0 'sinon on n'écrit rien
        End Select
    Else
        MaskNumeric = KeyAscii
    End If
End Function

Maintenant dans l'évènement KeyPress de ton control tu n'as plus qu'à écrire
KeyAscii = MaskNumeric(KeyAscii)
TBBUIM
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
17 juil. 2006 à 11:53
biensur là aussi, tu peux mettre plusieurs fois la virgule :(
ce que tu peux faire c mettre un boolean propre à ta form
en mettant en dehors de tout un
dim b as boolean
Dans le form_load => b= true
et un test dans le keyascii qui change la valeur de b qd on a utilisé la virgule
if keyascii = 44 then 'si on appuie sur la virgule
    if b = true then
      keyascii  = Masknumeric(keyascii)
     b= false 'ne permet pas une 2eme virgule
    else
       keyascii = 0 'ne renvoi rien si  c la 2eme fois
    end if
else
    Keyascii = MaskNumeric(Keyascii)
end if
comme ça on ne peut l'écrire qu'une fois, mais il faudrait faire également une gestion pour le cas où on efface la virgule avec la touche del.dans ce cas, cela rend possible à nouveau l'appuie de cette dernière.
Bref, c'est assez lourd. Le plus rapide étant de vérifier à la sorti du control, si la valeur entrée est numérique
isnumeric(Me.Text1)
TBBUIM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
76cacash Messages postés 22 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 août 2006
17 juil. 2006 à 11:56
oui mais ton petit progamme est en vb6 et moi je programme en vb.net donc je ne connai pas Keyascii
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
18 juil. 2006 à 15:39
lol sorry

TBBUIM
0
Rejoignez-nous