[Excel-VBA] Comparaison de dates

Bonjour,

J'ai un souci avec des comparaisons de dates...

L'utilisateur saisi un intervalle du type:
"de 30/12/2005 à 02/01/2006"

Et j'aimerais faire en sorte que si une cellule contient une date comprise dans cet intervalle alors çà fait quelque chose.

Pour l'instant j'ai mis des MsgBox pour vérifier:

LaDerniere = Application.Workbooks(fichier(4)).Worksheets("Tableau").Cells(65536, choix).End(xlUp).Row
temps = Split(mot_clef, " ")
date1 = temps(1)
date2 = temps(3)
MsgBox (date1)
MsgBox (date2)
For i = 20 To LaDerniere
If date1 < Application.Workbooks(fichier(4)).Worksheets("Tableau").Cells(i, choix).Value Then
MsgBox ("plus grand que " & date1 & "")
End If
If Application.Workbooks(fichier(4)).Worksheets("Tableau").Cells(i, choix).Value < date2 Then
MsgBox ("plus petit que " & date2 & "")
End If


La comparaison fonctionne bien au niveau de la plus grande date de l'intervalle mais pas au niveau de la plus petite date...

Pour une date du 31/12/2005, le résultat est : "Plus petit que 02/01/2006" mais il ne veut pas me dire "Plus grand que 30/12/2005" ...

Merci de votre aide

--
"La culture c'est comme la confiture : moins on en a plus on l'étale"

17 réponses

  1. re:

    quelque chose comme ça :

        Dim DateDeb, DateFin As Date
        Dim DateCible As Date
        
        I = 1: choix = 1
        LaDerniere = Workbooks("Test.xls").Worksheets("Feuil1").Cells(65536, choix).End(xlUp).Row
        mot_clef = Range("I1").Value
        Temps = Split(mot_clef, " ")
        DateDeb = FormatDateTime(Temps(0))
        DateFin = FormatDateTime(Temps(1))
        For I = 1 To LaDerniere
            DateCible = FormatDateTime(Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, choix).Value)
            If ((DateDeb < DateCible) And (DateFin > DateCible)) Then
                Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, (choix + 2)).Value = ("Date comprise dans l'interval")
            Else
                Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, (choix + 2)).Value = ("Date non-comprise dans l'interval")
            End If
        Next I
    
    


    Lupin
    1. bonjour,
      je veux savoir comment rechercher des données entre deux dates????????????
      c'est urgent
      1. oui oui
        j'avais juste oublier de mettre datecible en Date
        j'ai fait qu'un essai avant de quitter le boulot et çà a marcher donc j'essaierai çà demain matin à nouveau! ;)

        1. re:

          c'est un problème de typage.

          il te faut formatter toutes les variables en format DATE.
          il faut comparrer des oranges avec des oranges, des pommes
          avec des pommes, et enfin des dates avec des dates.

          en fait comparer des variables n'est pas suffisant, il faut
          comparer deux variables de même types.

          Lupin
          1. Ah ben non... j'ai essayé avec deux dates d'année différente et çà veut pas marcher! :'(
            1. re:

              chez-moi ça fonctionne nickel, ssi les format de date sont OK

                  I = 1: choix = 1
                  LaDerniere = Workbooks("Test.xls").Worksheets("Feuil1").Cells(65536, choix).End(xlUp).Row
                  mot_clef = Range("I1").Value
                  Temps = Split(mot_clef, " ")
                  DateDeb = Temps(0)
                  DateFin = Temps(1)
                  For I = 1 To LaDerniere
                      DateCible = FormatDateTime(Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, choix).Value)
                      If ((DateDeb < DateCible) And (DateFin > DateCible)) Then
                          Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, (choix + 2)).Value = ("Date comprise dans l'interval")
                      Else
                          Workbooks("Test.xls").Worksheets("Feuil1").Cells(I, (choix + 2)).Value = ("Date non-comprise dans l'interval")
                      End If
                  Next I
              
              


              Lupin
              1. date1 et date2 sont devenues datedeb et datefin...

                laderniere et temps, pas besoin de les déclarer...
                1. Salut,

                  celles-ci ne sont pas défini ???

                  LaDerniere
                  Date1
                  Date2
                  Temps

                  Lupin
                  1. Dim chemin, mot_clef As String
                    Dim valid, lancement, fin, k, choix As Integer
                    Dim ok As Boolean
                    Dim fso, Dossier, Flder As Object
                    Dim fichier
                    Dim cellule As Integer
                    Dim Msg1, Msg2, Style, Title, Box
                    Dim nb, derniere_colonne
                    Dim cellul As String
                    Dim par As Variant
                    Dim datedeb, datefin As Date


                    J'ai un peu changé mon code en fait...j'ai l'impression qu'on ne peut faire que ce style de comparaison avec les dates:

                    If datefin > Application.Workbooks(fichier(4)).Worksheets("Tableau").Cells(i, choix).Value Then


                    mais pas çà :
                    If datefin < Application.Workbooks(fichier(4)).Worksheets("Tableau").Cells(i, choix).Value Then


                    1. Salut KdTca,

                      Peux-tu spécifier le type de variables !

                      Dim LaDerniere As ...
                      Dim choix As ...
                      Dim date1,date2 As ...
                      Dim temps() As ...

                      Lupin
                      1. Problème non résolu (merci de poster un complément d'information pour faire remonter le fil de discussion)