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

  1. Contributeur
    Bonjour

    essaies la fonction "datevalue"
    datevalue(ladate)

    "ladate" peut être du texte
    0
    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
      0
      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)
        0
        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!
          0
          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)
            0
            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
              0