FORMATER UN TEXTBOX (N'ACCEPTER QUE DES CHIFFRES)

Signaler
-
Galactus13
Messages postés
328
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
2 décembre 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/1136-formater-un-textbox-n-accepter-que-des-chiffres

Galactus13
Messages postés
328
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
2 décembre 2019
1
Superbe, dommage que la virgule ne puisse être autorisée !
Fabio972
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
4 août 2004

Un peu trop long ikariShinji, pour les virugles on peut faire plus court. En se basant sur cette astuce trouvé ici http://www.vbfrance.com/code.aspx?ID=1217

-----
Private Sub txtBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 46, 44 ' 46 -> . | 44 -> ,
If InStr(txtBox.Text, ",") > 0 Or InStr(txtBox.Text, ".") > 0 Then KeyAscii = 0
Case Else
If Not Chr(KeyAscii) Like "[0-9,.]" And KeyAscii <> Asc(vbBack) Then KeyAscii = 0
End Select
End Sub
-----
cs_GMI
Messages postés
3
Date d'inscription
mercredi 20 décembre 2000
Statut
Membre
Dernière intervention
19 avril 2002

Je vous invite à voir l'article http://www.vbfrance.com/article.asp?Val=640
ikariShinji
Messages postés
18
Date d'inscription
mercredi 13 mars 2002
Statut
Membre
Dernière intervention
2 juin 2005

Merci à toi Néo.balastik pour ce code bien pratique !

Toutefois, ton code empêche du coup la saisie d'un nombre à virgule, voici une solution simple pour régler le problème :

Dim SvgVirgule As Boolean

Private Sub Form_Load()
SetNumber txtBox, True
SvgVirgule = False
End Sub

Private Sub txtBox_KeyPress(KeyAscii As Integer)

' on empêche de saisir une virgule dans un TextBox vide
If txtBox.Text = "" Then
SvgVirgule = False
Exit Sub
End If

' si on supprime la virgule, on doit pouvoir en remettre une
If KeyAscii = 8 Then
If Right(txtBox.Text, 1) "," Then SvgVirgule False
End If

' on vérifie qu'il n'y a pas déjà une virgule
If KeyAscii 46 Or KeyAscii 44 Then
If SvgVirgule = True Then Exit Sub
End If

' si c un point, on le convertit en virgule
If KeyAscii 46 Then KeyAscii 44

' si c une virgule, on la met
If KeyAscii = 44 Then
SetNumber txtBox, False
SvgVirgule = True
End If
End Sub

Private Sub txtBox_KeyUp(KeyCode As Integer, Shift As Integer)
SetNumber txtBox, True
End Sub

( Vous trouverez bientôt une petite application de ce code - convertisseur Euro/Francs - sur mon site )