Bonjour, voici un petit code qui fonctionne (presque):
Le souci c'est qui si j'ai le malheur de tapé par exemple 13.2 et que j'appuie sur "entré" ou "tab" il me vide ma textbox au lieu de me mettre 13.20.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Private Sub TextBox_ht_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Si la valeur de textbox_ht est un nombre sans virgule alors on rajoute la virgule et deux 0 TextBox_ht = IIf(IsNumeric(TextBox_ht), Format(TextBox_ht, "###0.00"), "") End Sub Private Sub TextBox_ht_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Seule une valeur numérique peut être entré If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0 'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant If Len(TextBox_ht) = 1 And TextBox_ht = "." Then TextBox_ht = "0." 'Si un point est déjà dans la chaine on ne peut pas en taper un autre If InStr(TextBox_ht.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0 'S'il existe un point dans le TextBox : InStr(TextBox_ht.Value, ".") <> 0 'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_ht.Value) 'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_ht.Value, ".") + 1 'alors on annule la saisie : Then KeyAscii = 0 If InStr(TextBox_ht.Value, ".") <> 0 And Len(TextBox_ht.Value) > InStr(TextBox_ht.Value, ".") + 1 Then KeyAscii = 0 End Sub
Donc mon code complète bien mon entier avec deux 0 mais pas mon chiffre à virgule lorsque il en faut un à la fin.
Une idée?
Partager