Textbox1 vba erreur date

Bonjour,
je souhaiterais que dans une textbox au format date dd.mm.yy
que si je tape un mauvais mois :exemple"10.15.13" qu'il me fasse erreur.
J'ai un code vba pour lequel ca marche très bien pour les mois mais pas les jours!
exemple si je tape "45.03.13" il ne m'affiche aucune erreur!!
j'ai oublié de préciser. il faut que la textbox accept le format xx.xx.xx
si la date n'est pas trouvée.
voici mon code vb:
Private Sub TextBox4_Change()
Dim Valeur As String
TextBox4.MaxLength = 8
Valeur = Len(TextBox4)
If Valeur = 2 Or Valeur = 5 Then
TextBox4 = TextBox4 & "."
ElseIf Valeur = 8 Then

If Not IsDate(Format(Replace(TextBox4, ".", "/"), "dd/mm/yy")) Then

MsgBox "Format incorrect"
TextBox4 = ""
Exit Sub
Else

End If

End If
End Sub

4 réponses

  1. Contributeur
    Bonsoir,

    Prend le DateTimePicker Control.
    Tu peux soit utiliser le calendrier, soit saisir, et tu ne peux avoir qu'une date valide.

    eric
    1. Bonjour,
      Merci du retour.
      Je pense que je n'ai pas compris votre problème.
      Désolé, car c'est le plus simple si vous utilisez un formulaire avec zone de texte.
      1. Bonjour,
        Juste au passage, ne serait-il pas plus simple d'utiliser le contrôle [Calendar] pour entrer les dates .... dans votre formulaire (UserForm) !

        1. bonsoir,
          désolé mais qu'est ce que le controle calendar?
          je débutes vraiment en vba et les textbox
        2. je viens de trouver calendar.cette idée ne me convient pas du tout.trop encombrant et cette macro me permet de renommer une multitude d'images et donc chaque image a une date qu'il faut mettre dans une textbox.dans l'ensemble le code vba précédent est intéréssant sauf que j'ai l'impression qu'on pourrait peu être l'améliorer afin de ne pas taper pour le jour 51 le mois 13 et l'année 2080!
      2. je crois que j'ai mal tapé le code vba:

        mais il ne détecte pas un mauvais mois tapé exemple : 12.34.13
        cette erreur n'est pas détectée
        pour le jour ça ne marche pas non plus

        le voici a nouveau:

        Private Sub TextBox4_Change()
        Dim Valeur As String

        TextBox4.MaxLength = 8
        Valeur = Len(TextBox4)
        If Valeur = 2 Or Valeur = 5 Then
        TextBox4 = TextBox4 & "."
        ElseIf Valeur = 8 Then
        If Not IsDate(Format(Replace(TextBox4, ".", "/"), "dd/mm/yy")) Then
        MsgBox "Format incorrect"
        TextBox4 = ""
        Exit Sub
        Else

        End If

        End If

        End Sub