Excel vba textBox format Date

Résolu
Bonjour,

j'ai un souci avec un userform que j'ai crée. En effet j'ai 2 text box (txt3 et txt4). Txt3 désigne la date de départ et txt4 celle de fin. Je veux que txt4 soit > à txt4. Et aussi et surtout je veux que la date soit sous format dd/mm/aaaa.
Je vous envoie le petit code que j'ai écris :

Private Sub txt3_AfterUpdate()

'Faire que l'on ne puisse entrer que des dates dans txt3
If txt3.Value <> "" Then
If Not IsDate(txt3.Value) Then
MsgBox "Date incorrecte.", vbCritical + vbOKOnly, "Erreur"
txt3.Value = ""
Else
txt3.Value = CDate(txt3.Value)
End If

End If

End Sub

Private Sub txt4_AfterUpdate()

'Faire que l'on ne puisse entrer que des dates dans txt4
If txt4.Value <> "" Then
If Not IsDate(txt4.Value) Then
MsgBox "Date incorrecte.", vbCritical + vbOKOnly, "Erreur"
txt4.Value = ""
Else
txt4.Value = CDate(txt4.Value)

End If
End If

'La date entrée doit être supérieure à celle de txt3
If txt4.Value < txt3.Value Then
MsgBox "Veuillez saisir une date postérieure à celle de départ.", vbOKOnly
End If

End Sub

Cependant ca ne marche pas! Quand j'entre dans txt3 : 30/09/09 et dans txt4 : 7/12/09, il me dit que la date que j'entre en second n'est pas postérieure à la première.
Pourriez vous m'aider svp?

Cdlt,
Mary (en détresse encore une fois)
Configuration: Windows XP Internet Explorer 6.0

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Merci beaucoup de toutes ces réponses, elles m'ont vraiment beaucoup aidé...
    J'espère qu'un jour je pourrais rendre la pareille!

    Bonne journée
    1. Contributeur
      re,
      Ze big problème est qu'il y a des dates où quelquesoit l'environnement (fr ou uk) il y aura ambiguité style
      10/5/9 est ce le 5 octobre uk ou le 10 mai(fr)

      je t'ai bricolé un truc où on demande confirmation que tu pourras adapter si ca te convient
      https://www.cjoint.com/?hplEreqUmb

      j'en ai profité pour te donner une manière de transformer le jour en nombre standard pour comparer (datevalue n'était pas terrible)
      1. En fait il n'y a pas de souci, il reconnait le format date! Le hic est que je n'arrive pas à savoir s'il la considèrer en jj/mm/aaaa ou en mm/jj/aaaa.
        Et en plus le concept de date inférieure à une autre n'a pas l'air d'être bon! enfin mon écriture! Quand je tape des dates pour vérifier, ca donne un peu du n'importe quoi...
        Je suis complètement perdue!
        1. Contributeur
          Bonjour
          essaies
          If Txt4 Like "##/##/####" Then
          .....
          End If

          la date peut saisie sie sous la forme JJ/MM/AA ou J/M/A ou J/M ou J-m-A ou.... Mercerdi 15 juillet 2009 etc... bref les formats date prévus par XL (format-cellule-nombre)
          1. Encore une fois merci pour ta réponse, décidément tu es toujours là pour m'aider...
            Puis-je encore abuser de tes connaissances en vb?
            Ca ne marche toujours pas! voici ce qui est écris maintenant. (peu de choses ont changé)
            Private Sub txt3_AfterUpdate()

            'Faire que l'on ne puisse entrer que des dates dans txt3
            If txt3.Value <> "" Then
            If Not IsDate(txt3.Value) Then
            MsgBox "Date incorrecte.", vbCritical + vbOKOnly, "Erreur"
            txt3.Value = ""
            Else
            txt3.Value = DateValue(txt3.Value)

            End If

            End If

            End Sub

            Private Sub txt4_AfterUpdate()

            'Faire que l'on ne puisse entrer que des dates dans txt4
            If txt4.Value <> "" Then
            If Not IsDate(txt4.Value) Then
            MsgBox "Date incorrecte.", vbCritical + vbOKOnly, "Erreur"
            txt4.Value = ""
            Else
            txt4.Value = DateValue(txt4.Value)

            End If
            End If

            'La date entrée doit être supérieure à celle de txt3
            If txt4.Value < txt3.Value Then
            MsgBox "Veuillez saisir une date postérieure à celle de départ.", vbOKOnly
            txt4.Value = ""
            End If

            End Sub
            1. Contributeur
              Bonjour

              essaies la fonction "datevalue"
              datevalue(ladate)

              "ladate" peut être du texte