Bonjour, voici un petit code qui fonctionne (presque):
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
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.

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?