Problème effacement caractère dans une textbox
Bonjour à tous,
Je souhaite faciliter la saisie d'une date dans une textbox. J'ai donc limité les caractères autorisés (seulement numériques) et j'ai fait en sorte que lorsqu'on arrive aux 3ème et 6ème caractères, le caractère "/" s'affiche automatiquement. J'ai également mis une condition IsDate à la validation de la saisie.
Mon problème se situe lorsque je veux supprimer des caractères (erreur dans la saisie), lorsque je veux n'effacer que le caractère avant le "/", cela efface les 2 caractères avant le "/". J'ai essayer en pas à pas de trouver d'où venait le problème, je vois bien à quel moment ça ne va pas, mais n'arrive pas à corriger.
Pouvez-vous m'aider? Ci-dessous le code de la textbox nommée textbox.
Merci
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Private Sub textbox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'exemple pour format xx/xx/xxxx
textbox.MaxLength = 10
If textbox <> "" Then
If Not IsDate(textbox.Value) Then
MsgBox "Veuillez entrer une date valide au format JJ/MM/AAA", vbExclamation, "Format de date incorrecte"
textbox = ""
Exit Sub
End If
End If
End Sub
Private Sub textbox_Change()
Dim Valeur As Byte
Valeur = Len(Me.textbox)
If Valeur = 2 Or Valeur = 5 Then textbox = textbox & "/"
End Sub
Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim Valeur As Byte
' Si la valeur n'est pas comprise entre 0 et 9
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
MsgBox "Caractère non autorisé"
KeyAscii = 0 'on annule la pression sur la touche
End If
End Sub
Private Sub textbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Valeur As Byte
Dim Temp As String
Valeur = Len(Me.textbox.Value)
If KeyCode = vbKeyBack And Valeur = 6 Then
Temp = Left(Me.textbox.Value, 4)
Me.textbox.Value = ""
Me.textbox.Value = Temp
ElseIf KeyCode = vbKeyBack And Valeur = 3 Then
Temp = Left(Me.textbox.Value, 1)
Me.textbox.Value = ""
Me.textbox.Value = Temp
End If
End Sub |