Date avec "/" dans une TextBox

Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - Modifié par Kuartz le 21/10/2015 à 17:44
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 21 oct. 2015 à 22:22
Bonjour,

Débutant en VBA, j'ai voulu mettre en forme de manière la plus simple possible pour l'utilisateur une TextBox qui contient une date.

Voici mon code :

Private Sub TextBox_DATE_CHARGEMENT_Change()

Dim valeur As Byte

Me.TextBox_DATE_CHARGEMENT.BackColor = &H80000005

valeur = Len(Me.TextBox_DATE_CHARGEMENT)
If valeur = 2 Or valeur = 5 Then Me.TextBox_DATE_CHARGEMENT = Me.TextBox_DATE_CHARGEMENT & "/"
If valeur = 4 And Right(Me.TextBox_DATE_CHARGEMENT, 1) = "/" Then Me.TextBox_DATE_CHARGEMENT = Left(Me.TextBox_DATE_CHARGEMENT, Len(Me.TextBox_DATE_CHARGEMENT) - 1)
If valeur = 7 And Right(Me.TextBox_DATE_CHARGEMENT, 1) = "/" Then Me.TextBox_DATE_CHARGEMENT = Left(Me.TextBox_DATE_CHARGEMENT, Len(Me.TextBox_DATE_CHARGEMENT) - 1)
End Sub


Private Sub TextBox_DATE_CHARGEMENT_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Len(Me.TextBox_DATE_CHARGEMENT) < 10 Then Me.TextBox_DATE_CHARGEMENT = Format(TextBox_DATE_CHARGEMENT, "dd/mm/yyyy")
End Sub


Ce code me permet dans un premier temps d'éviter à avoir à taper les "/" dans la TextBox, il permet ensuite d'éviter que si l'utilisateur tape quand même les "/", d'avoir 2 "/" à chaque fois. Et le dernier code permet enfin que la date se transforme si l'utilisateur tape par exemple : "12/12/15" en "12/12/2015".

Problème : Supposons que dans ma TextBox je tape une date et je me trompe, je veux effacer avec la touche "Del". Et bien ça m'est impossible dès que j'arrive au caractère "/". Et pour cause, ceci m'en empêche :


If valeur = 2 Or valeur = 5 Then Me.TextBox_DATE_CHARGEMENT = Me.TextBox_DATE_CHARGEMENT & "/"


Une idée?

Le fichier test : https://www.cjoint.com/c/EJvpQRBZIHf

Il suffit d'appuyer sur "+" pour voir apparaître le UserForm. Tapez une date et essayez d'effacer en cours de saisie.

Merci d'avance.

Cordialement.

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 oct. 2015 à 22:22
Bonjour,

Si tu mets ton code dans
"Private Sub TextBox_DATE_CHARGEMENT_KeyPress"
cela fonctionne mais rien n'est parfait les "/" ne s'affichent qu'après saisie d'un autre caractère.
0