-Bonjour,
Je cherche à forcer le format numérique dans un textbox ("#,##0.00 €"...soit le format monétaire 2 décimales avec séparateur de milliers et devise (€)...).
Je cherchais une solution un peu plus "classe" que :
Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(TextBox1, "# ##0.00 €")
End Sub
...
Après avoir "bidouillé" un bout de code, je reste coincé...
Les soucis :
1) je ne parviens pas à ce que le curseur suive la saisie au fur et à mesure :
lorsque je tape "123456789", tout va bien, le curseur avance normal.
lorsque je tape un zéro, çà foire !?! ...le curseur fait du sur place !
Ensuite, en arrivant aux décimales, dès la saisie de la seconde décimale, le curseur va se placer après la devise "€"... pas très classe tout çà...
Est-ce que quelqu'un pourrait m'aider ?
Voici le code :
Je cherche à forcer le format numérique dans un textbox ("#,##0.00 €"...soit le format monétaire 2 décimales avec séparateur de milliers et devise (€)...).
Je cherchais une solution un peu plus "classe" que :
Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(TextBox1, "# ##0.00 €")
End Sub
...
Après avoir "bidouillé" un bout de code, je reste coincé...
Les soucis :
1) je ne parviens pas à ce que le curseur suive la saisie au fur et à mesure :
lorsque je tape "123456789", tout va bien, le curseur avance normal.
lorsque je tape un zéro, çà foire !?! ...le curseur fait du sur place !
Ensuite, en arrivant aux décimales, dès la saisie de la seconde décimale, le curseur va se placer après la devise "€"... pas très classe tout çà...
Est-ce que quelqu'un pourrait m'aider ?
Voici le code :
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 46 Then TextBox1.Tag = ""
If TextBox1.Tag <> "" Then
If KeyCode = 8 Then TextBox1.Tag = Mid(TextBox1.Tag, 1, Len(TextBox1.Tag) - 1)
End If
End Sub
'******************************************************************************************************
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890,.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If "0123456789,." Like "*" & Chr(KeyAscii) & "*" Then
If InStr(TextBox1, ",") = 1 Then
If Len(Split(TextBox1.Tag, ",")(1)) = 2 Then KeyAscii = 0
End If
If KeyAscii = 46 Then KeyAscii = 44
'If KeyCode = 48 Then TextBox1.SelStart = InStr(TextBox1.Value, 0) + 1
TextBox1.Tag = TextBox1.Tag & Chr$(KeyAscii)
KeyAscii = 0
End If
End Sub
'******************************************************************************************************
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 48 Then TextBox1.SelStart = InStr(TextBox1.Value, 0) - 1
If KeyCode < 96 Or KeyCode > 105 Then
If TextBox1 <> "" Then TextBox1 = Left(TextBox1, Len(TextBox1))
End If
If TextBox1.Tag <> "" Then TextBox1.Value = Format(CDbl(TextBox1.Tag), "#,##0.00 €")
TextBox1.SelStart = InStr(TextBox1.Value, 0) - 2 ' , Len(TextBox1) + 1)
End Sub
Je vous joint le fichier en annexe ; il s'agit d'un petit programme que j'essaye de développer pour ma fille dans le cadre de ses cours scolaires (rien de confidentiel).