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 26 27 28
| 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
Dim vResult As Variant
'TextBox_ht = "13.2"
vResult = Replace(TextBox_ht.Value, ".", ",")
vResult = CDbl(vResult)
TextBox_ht = IIf(IsNumeric(vResult), Format(vResult, "###0.00"), "")
TextBox_ht = Replace(TextBox_ht, ",", ".")
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 |
Partager