76cacash
Messages postés22Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention24 août 2006
-
17 juil. 2006 à 10:14
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDerniè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
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 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
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 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
Vous n’avez pas trouvé la réponse que vous recherchez ?