Empêcher 2 décimales dans une tectbox numérique

donpopo

XLDnaute Occasionnel
Bonjour le forum,

Je suis un peu perdu avec une textbox. Je désire limiter la saisie dans la textbox à des chiffres et une virgule.

Voici le code que j'ai fait:

Private Sub TextPU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) '
Select Case KeyAscii
Case 48 To 57 ' chiffres de 0 à 9 acceptés
KeyAscii = KeyAscii
Case 46 ' point transformé en virgule
KeyAscii = 44
Case 44 ' virgule acceptée
KeyAscii = KeyAscii
Case Else
KeyAscii = 0
End Select
End Su
b

Cependant, malgré quelques idées glanées sur le forum, je n'arrive pas à limiter la saisie à une seule virgule.

Quelqu'un pourrait-il me renseigner?

Bien à vous,

Donpopo
 

Pierrot93

XLDnaute Barbatruc
Re : Empêcher 2 décimales dans une tectbox numérique

Bonjour,

regarde ceci, si j'ai bien compris...
Code:
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim s As String
With TextBox1
    s = Mid(.Text, 1, .SelStart) & Chr(KeyAscii) & Mid(.Text, .SelStart + 1)
End With
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
End Sub
bonne soirée
@+

Edition : attention j'ai inversé 2 lignes de code...2ème édition : j'ai enlevé le point de cette ligne
Code:
If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Empêcher 2 décimales dans une tectbox numérique

bonjour donpopo,Pierrot:):)
un autre code on peut quand meme taper le point

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
If InStr("0123456789.,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If InStr(TextBox1, ",") <> 0 And Chr(KeyAscii) = "," Then KeyAscii = 0
If Len(TextBox1) = 1 And TextBox1 = "," Then TextBox1 = ""
End Sub
 
Dernière édition:

Discussions similaires

Réponses
20
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote