[Excel-VBA] Comparaison de dates
Utilisateur anonyme
-
magi123 Messages postés 18 Statut Membre -
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:
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
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:
- [Excel-VBA] Comparaison de dates
- Nombre de jours entre deux dates excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
17 réponses
re:
quelque chose comme ça :
Lupin
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Problème non résolu (merci de poster un complément d'information pour faire remonter le fil de discussion)
Salut KdTca,
Peux-tu spécifier le type de variables !
Dim LaDerniere As ...
Dim choix As ...
Dim date1,date2 As ...
Dim temps() As ...
Lupin
Peux-tu spécifier le type de variables !
Dim LaDerniere As ...
Dim choix As ...
Dim date1,date2 As ...
Dim temps() As ...
Lupin
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
re:
chez-moi ça fonctionne nickel, ssi les format de date sont OK
Lupin
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
date1 et date2 sont devenues datedeb et datefin...
laderniere et temps, pas besoin de les déclarer...
laderniere et temps, pas besoin de les déclarer...
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
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