blord
XLDnaute Impliqué
Bonjour à tous,
J'aimerais savoir s'il est possible de forcer la saisie dans un textbox selon les critères suivants :
En fait, le textbox servira à saisir des heures de travail.... donc 1.25 pour 1H15 de travail etc...
J'utilise déjà ces codes pour certaines validtions (merci au forum...) mais je bloque pour l'adpater à mes boins spécifiques...
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
ou
Option Explicit
Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Const Point = "."
Const Virgule = ","
Puis, pour chaque champ à vailder :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Empêche la saisie autre que du numérique ainsi que plus qu'un séparateur décimal
If KeyAscii = Asc(Point) Then
If InStr(TextBox1, Virgule) = 0 Then
KeyAscii = Asc(Virgule)
Else
KeyAscii = 0
End If
ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
KeyAscii = 0
End If
If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
Merci à tous pour votre précieuses aide !
J'aimerais savoir s'il est possible de forcer la saisie dans un textbox selon les critères suivants :
- que des chiffres
- un seul symbole décimal
- obligatoirement deux chiffres après le séparateur décimal et pas plus
- seules les valeurs 00 - 25 - 50 - 75 seraient permises après le symbole décimal
En fait, le textbox servira à saisir des heures de travail.... donc 1.25 pour 1H15 de travail etc...
J'utilise déjà ces codes pour certaines validtions (merci au forum...) mais je bloque pour l'adpater à mes boins spécifiques...
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
ou
Option Explicit
Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Const Point = "."
Const Virgule = ","
Puis, pour chaque champ à vailder :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Empêche la saisie autre que du numérique ainsi que plus qu'un séparateur décimal
If KeyAscii = Asc(Point) Then
If InStr(TextBox1, Virgule) = 0 Then
KeyAscii = Asc(Virgule)
Else
KeyAscii = 0
End If
ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
KeyAscii = 0
End If
If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
Merci à tous pour votre précieuses aide !