Suppression date dans textbox au format date

SAMWRC

XLDnaute Occasionnel
Bonjour le forum !

J'ai un probleme avec mes textbox. J'ai réussi grace aux différents tutoriels et discussions du forum a imposer que le format de celles-ci soit une date. Jusqu'ici tout va bien. Le soucis, c'est que lorsque je souhaite supprimer des caracteres en utilisant la touche effacer de mon clavier, ca bloque sur le caractere "/".

Je souhaiterais que, lorsque l'utilisateur efface le 1er chiffre de l'annee ou le 1er chiffre du mois, le "/" precedent soit effacé également.

Vous me direz, je peux effacer en selectionnant tout avec la souris, mais j'aimerais bien arriver a résoudre ce probleme.

Merci pour votre aide

Sam
 

Pièces jointes

  • Suppression date textbox format date.zip
    12.6 KB · Affichages: 50
  • Suppression date textbox format date.zip
    12.6 KB · Affichages: 50
  • Suppression date textbox format date.zip
    12.6 KB · Affichages: 51

youky(BJ)

XLDnaute Barbatruc
Re : Suppression date dans textbox au format date

Bonjour,
De retour ton fichier, j'ai remplacé les macros par celles que j'avais faites il y a qlq temps. Tu peux effacer à souhait.
Bruno
 

Pièces jointes

  • Suppression date textbox format date.zip
    18.8 KB · Affichages: 50
  • Suppression date textbox format date.zip
    18.8 KB · Affichages: 49
  • Suppression date textbox format date.zip
    18.8 KB · Affichages: 50

SAMWRC

XLDnaute Occasionnel
Re : Suppression date dans textbox au format date

Bonjour Bruno,

J'ai essayé de comprendre ton code, et meme si c'est un peu compliqué pour moi, je pense que pour résoudre mon probleme, il faudrait que je détecte une pression sur la touche BACKSPACE a l'aide du code suivant :

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Mais j'ai beau essayé, je n'arrive pas a le faire fonctionner. J'ai vu que le Keycode de cette touche était 127, mais rien a faire, je ne trouve pas ...

Une idée ?

Merci d'avance
 

youky(BJ)

XLDnaute Barbatruc
Re : Suppression date dans textbox au format date

Re,
Tu remarqueras que j'utilise la pression de cette touche dans la macro KeyUp
If KeyCode = 8 Then Exit Sub
Je lui fait quitter la macro afin de permettre l'effacement.
Bruno

Code:
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
[COLOR="red"]If KeyCode = 8 Then Exit Sub[/COLOR]
tx = TextBox2.Text
If Len(tx) = 2 Then
'blablabla
 

SAMWRC

XLDnaute Occasionnel
Re : Suppression date dans textbox au format date

Bonjour,

Merci, j'ai trouvé ma solution grace a tes indications. :)
Voici mon code si ca peut intéresser quelqu'un.

Merci pour ton aide
Sam

Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' To delete "/" when using Backspace
If KeyCode = 8 And (Len(TextBox2) = 2 Or Len(TextBox2) = 5) Then
TextBox2 = left(TextBox2, Len(TextBox2) - 1)
Exit Sub
End If

Select Case KeyAscii ' To impose numeric characters
Case 47 To 57 ' Allow the following characters: from 0 to 9
Case Else
KeyAscii = 0
End Select
If Len(TextBox2) = 10 Then KeyAscii = 0 ' Number max of characters in the textbox for date format DD/MM/YYYY

' To impose "/" in date format
If Len(TextBox2) = 2 Or Len(TextBox2) = 5 Then TextBox2 = TextBox2 & "/"
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : Suppression date dans textbox au format date

re Sam,
Désolé ton code n'est poas bon,
Tu as mélangé le KeyCode et KeyAscii.
Le KeyAscii n'est pas reconnu dans l'événement utilisé.
Voici une rectif.
Bruno
Code:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' To delete "/" when using Backspace
If KeyCode = 8 And (Len(TextBox1) = 2 Or Len(TextBox1) = 5) Then
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
Exit Sub
End If
Select Case KeyCode ' To impose numeric characters
Case 96 To 105 ' Allow the following characters: from 0 to 9
Case Else
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End Select
If Len(TextBox1) = 11 Then TextBox1 = Left(TextBox1, Len(TextBox1) - 1) ' Number max of characters in the textbox for date format DD/MM/YYYY

' To impose "/" in date format
If Len(TextBox1) = 2 Or Len(TextBox1) = 5 Then TextBox1 = TextBox1 & "/"
End Sub
 

SAMWRC

XLDnaute Occasionnel
Re : Suppression date dans textbox au format date

Re,

Effectivement, je me suis rendu compte de mon erreur apres coup.
Merci pour la correction.

Ou puis-je trouver une table de correspondance Keycode-KeyAscii ?
J'aimerais bien pouvoir utiliser les Keycode dans des codes futurs mais impossible de mettre la main sur une table de ce genre ...

Sam
 

SAMWRC

XLDnaute Occasionnel
Re : Suppression date dans textbox au format date

Re,

Merci pour l'astuce pour le Keycode.

Concernant mon code, j'avais des bugs avec la partie :
Case Else
TextBox1 = Left(TextBox1, Len(TextBox1) - 1).

Du coup, j'ai modifié pour arriver au code suivant qui fonctionne pas trop mal.

Sam

Code:
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii ' To impose numeric characters
    Case 47 To 57      ' Allow the following characters: from 0 to 9
    Case Else
        KeyAscii = 0
    End Select
    If Len(TextBox2) = 10 Then KeyAscii = 0 ' Number max of characters in the textbox for date format DD/MM/YYYY
End Sub


Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)   
     ' To delete "/" when using Backspace
    If KeyCode = 8 And (Len(TextBox2) = 2 Or Len(TextBox2) = 5) Then
        TextBox2 = left(TextBox2, Len(TextBox2) - 1)
        Exit Sub
    End If
       
    ' To impose "/" in date format
    If Len(TextBox2) = 2 Or Len(TextBox2) = 5 Then TextBox2 = TextBox2 & "/"
End Sub

Private Sub TextBox2_Change()
    ' To impose a date
    If Len(TextBox2) = 10 And Not IsDate(TextBox2.value) Then
        MsgBox "Incorrect format! Input a date DD/MM/YYYY!"
        TextBox2 = ""
        Exit Sub
    End If
    
    ' To impose the Start Date to be earlier than the End Date
    If Len(TextBox2) = 10 And Len(TextBox3) = 10 Then
        If CDate(TextBox2.value) >= CDate(TextBox3.value) Then
            MsgBox "Error: the Start Date cannot be greater than or equal the End Date!"
            TextBox2 = ""
            Exit Sub
        End If
    End If
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : Suppression date dans textbox au format date

Je pense que tu es bon cette fois !
Dans la dernière macro que je t'ai proposée j'ai oublié de modifier TextBox1 en TextBox2.
Peut être que cela a tout faussé.
C'était pas mal non plus de tout avoir dans le même événement comme je le faisais
A toi de voir . . .
bruno
 

SAMWRC

XLDnaute Occasionnel
Re : Suppression date dans textbox au format date

J'avais bien modifié le nom de la textbox mais il y avait quelque bug donc j'ai préféré chercher une autre solution.

C'est sur que ma solution n'est pas tres optimisée et un peu lourde avec 3 évenements mais j'ai opté pour celle-la car elle répond (presque) parfaitement a mes besoins.

Merci beaucoup pour ton aide précieuse

Sam
 

Discussions similaires

Statistiques des forums

Discussions
312 234
Messages
2 086 474
Membres
103 226
dernier inscrit
smail12