[Excel-VBA] Comparaison de dates

Fermé
Utilisateur anonyme - 8 août 2005 à 11:01
magi123 Messages postés 18 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 10 décembre 2007 - 3 déc. 2007 à 14:29
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
A voir également:

17 réponses

Utilisateur anonyme
8 août 2005 à 17:13
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
magi123 Messages postés 18 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 10 décembre 2007 8
3 déc. 2007 à 14:29
bonjour,
je veux savoir comment rechercher des données entre deux dates????????????
c'est urgent
5
Utilisateur anonyme
8 août 2005 à 14:42
Salut,

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

LaDerniere
Date1
Date2
Temps

Lupin
3
Utilisateur anonyme
8 août 2005 à 11:47
!up
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 août 2005 à 13:28
Problème non résolu (merci de poster un complément d'information pour faire remonter le fil de discussion)
1
Utilisateur anonyme
8 août 2005 à 14:16
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
Utilisateur anonyme
8 août 2005 à 14:26
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
Utilisateur anonyme
8 août 2005 à 16:26
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
Utilisateur anonyme
8 août 2005 à 14:45
date1 et date2 sont devenues datedeb et datefin...

laderniere et temps, pas besoin de les déclarer...
0
Utilisateur anonyme
8 août 2005 à 15:11
Pas de solutions? :'(

0
Utilisateur anonyme
8 août 2005 à 16:35
Merci çà marche nickel! ;)
0
Utilisateur anonyme
8 août 2005 à 16:39
Ah ben non... j'ai essayé avec deux dates d'année différente et çà veut pas marcher! :'(
0
Utilisateur anonyme
8 août 2005 à 16:46
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
Utilisateur anonyme
8 août 2005 à 16:47
Tu veux que je fasse çà comment?
0
Utilisateur anonyme
8 août 2005 à 17:18
Merci beaucoup!
0
Utilisateur anonyme
8 août 2005 à 17:32
re:

et le résultat ?

ça fonctionne bien ainsi ?

Lupin
0
Utilisateur anonyme
8 août 2005 à 18:28
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