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. Contributeur
    Bonjour

    essaies la fonction "datevalue"
    datevalue(ladate)

    "ladate" peut être du texte
    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
        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. 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
            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. 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