Rechercher : dans
Par :

[Excel-VBA] Comparaison de dates

Dernière réponse le 3 déc 2007 à 14:29:51 KdTcA, le 8 aoû 2005 à 11:01:22 
 Signaler ce message aux modérateurs

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"

1

KdTcA, le 8 aoû 2005 à 11:47:28

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

Répondre à KdTcA

2

KdTcA, le 8 aoû 2005 à 13:28:54

Problème non résolu (merci de poster un complément d'information pour faire remonter le fil de discussion)
"La culture c'est comme la confiture : moins on en a plus on l'étale"

Répondre à KdTcA

3

Lupin.Arsene, le 8 aoû 2005 à 14:16:32

Salut KdTca,

Peux-tu spécifier le type de variables !

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

Lupin
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

4

KdTcA, le 8 aoû 2005 à 14:26:38

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


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

Répondre à KdTcA

5

Lupin.Arsene, le 8 aoû 2005 à 14:42:06

Salut,

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

LaDerniere
Date1
Date2
Temps

Lupin
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

6

KdTcA, le 8 aoû 2005 à 14:45:13

Date1 et date2 sont devenues datedeb et datefin...

laderniere et temps, pas besoin de les déclarer... "La culture c'est comme la confiture : moins on en a plus on l'étale"

Répondre à KdTcA

7

KdTcA, le 8 aoû 2005 à 15:11:52

Pas de solutions? :'(

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

Répondre à KdTcA

8

Lupin.Arsene, le 8 aoû 2005 à 16:26:00

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
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

9

KdTcA, le 8 aoû 2005 à 16:35:34

Merci çà marche nickel! ;) "La culture c'est comme la confiture : moins on en a plus on l'étale"

Répondre à KdTcA

10

KdTcA, le 8 aoû 2005 à 16:39:06

Ah ben non... j'ai essayé avec deux dates d'année différente et çà veut pas marcher! :'( "La culture c'est comme la confiture : moins on en a plus on l'étale"

Répondre à KdTcA

11

Lupin.Arsene, le 8 aoû 2005 à 16:46:10

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
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

12

KdTcA, le 8 aoû 2005 à 16:47:11

Tu veux que je fasse çà comment? "La culture c'est comme la confiture : moins on en a plus on l'étale"

Répondre à KdTcA

13

Lupin.Arsene, le 8 aoû 2005 à 17:13:34
  • +3

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
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

14

KdTcA, le 8 aoû 2005 à 17:18:20

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

Répondre à KdTcA

15

Lupin.Arsene, le 8 aoû 2005 à 17:32:31

Re:

et le résultat ?

ça fonctionne bien ainsi ?

Lupin
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~

Répondre à Lupin.Arsene

16

KdTcA, le 8 aoû 2005 à 18:28:51

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! ;)

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

Répondre à KdTcA

17

 magi123, le 3 déc 2007 à 14:29:51

Bonjour,
je veux savoir comment rechercher des données entre deux dates????????????
c'est urgent

Répondre à magi123