[Excel-VBA] Comparaison de dates

Utilisateur anonyme -  
magi123 Messages postés 18 Statut Membre -
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. Utilisateur anonyme
     
    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
    9
  2. magi123 Messages postés 18 Statut Membre 8
     
    bonjour,
    je veux savoir comment rechercher des données entre deux dates????????????
    c'est urgent
    5
  3. Utilisateur anonyme
     
    Salut,

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

    LaDerniere
    Date1
    Date2
    Temps

    Lupin
    3
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Utilisateur anonyme
     
    Problème non résolu (merci de poster un complément d'information pour faire remonter le fil de discussion)
    1
  6. Utilisateur anonyme
     
    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
  7. Utilisateur anonyme
     
    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
  8. Utilisateur anonyme
     
    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
  9. Utilisateur anonyme
     
    date1 et date2 sont devenues datedeb et datefin...

    laderniere et temps, pas besoin de les déclarer...
    0
  10. Utilisateur anonyme
     
    Merci çà marche nickel! ;)
    0
  11. Utilisateur anonyme
     
    Ah ben non... j'ai essayé avec deux dates d'année différente et çà veut pas marcher! :'(
    0
  12. Utilisateur anonyme
     
    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
    0
  13. Utilisateur anonyme
     
    Tu veux que je fasse çà comment?
    0
  14. Utilisateur anonyme
     
    re:

    et le résultat ?

    ça fonctionne bien ainsi ?

    Lupin
    0
  15. Utilisateur anonyme
     
    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! ;)

    0