Probleme de date

Résolu
Signaler
Messages postés
61
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Alors si j'ai bien compris et malgré que ça aille dans le sens contraire de ma logique à moi
pour excel:
16 fevrier 2007< 26 janvier 2007...

jusque là tout vas bien

le probleme c'est que quand je fais des comparaison mano mano dans excel ca va mais en vba il semble rien comprendre

mon code c'est ça:

For k = 1 To lignefinc
For l = 5 To lignefinm
If Workbooks("carole.xls").Worksheets(2).Cells(k, 22).Value = Workbooks("mouve.xls").Worksheets(1).Cells(l, 8).Value Then
If Workbooks("mouve.xls").Worksheets(1).Cells(l, 4).Value < Workbooks("carole.xls").Worksheets(1).Cells(k, 8).Value Then
Workbooks("mouve.xls").Activate
Worksheets(1).Select
Workbooks("mouve.xls").Worksheets(1).Rows(l).Copy Destination:=Workbooks("carole.xls").Worksheets(1).Cells(l, 1)
End If
End If
Next
Next

le probleme c'est qu'il ne veut pas comprendre dans ce sens là

il est faux que le 20/03 et le 10/04 sont aprés le 20/03 ( bah jsuis ok pour le 20/03 mais pas pour le 10/04)
et dans l'autre sens (>)
il est vrai que le 20/03 et le 10/ 04 sont avant le 20/03

je veux lui faire dire qu'il se moque de mon 20/03 mais qu'il me copie ( selon mon code)  le 10/04

pouvez vous m'aider et surtout qu'est ce qu'il ne va pas dans mon code???
merci

5 réponses

Messages postés
61
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
21 août 2007

Voila la réponse

If Int(CDbl(CDate(Workbooks("mouve.xls").Worksheets(1).Cells(l, 4).Value))) < _
Int(CDbl(CDate(Workbooks("carole.xls").Worksheets(2).Cells(k, 8).Value))) Then
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Si les variables qui te servent à tester tes dates ne sont pas de type DATE, VB comparera les premiers chiffres, donc les jours pour faire cette comparaison.
Donc, si tes dates sont dans des variables, il faut que ces dernières soient dimensionnées en "As Date" :
    Dim Date1 As Date
    Dim Date2 As Date
    Date1 = "30 juin 2007"
    Date2 = Now
    If Date1 < Date2 Then MsgBox "Oui"
Si tu utilises des cellules d'un feuille, il faut que leur format soit de type date :
    If Me.Cells(2, 3) < Me.Cells(3, 3) Then MsgBox "Oui"

Pour le reste, j'ai rien compris à ta question

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
Messages postés
61
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
21 août 2007

Alors,

Mes dates sont bien toutes au format date
Ma questions en faite elle est simple,
ma comparaison est fausse avec mon code pourquoi ? et comment y remedier surtout

merci.
Messages postés
9
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
3 octobre 2007

Bonjour,

J'ai déjà eu ce genre de problème. De plus le problème n'est pas apparu de suite, j'ai utilisé mon code un bou de temps et un beau jour, j'ai eu des erreurs sur mes datte !
Le truc c'est que même en définnisant le format de date (ddmmyyyy) VB me renvoyé des date en mmddyyy.

J'ai donc du découper ma datte en plusieur partie, d'abord comparrer l'année, puis le mois et le jour. C'est la seule solution sue j'ai trouvé.

j'espere que cela pourra t'aider

julien
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Tu aurais pu utiliser Long seulement, parce que là, un Int d'un Double d'une Date ... héhé...
If CLng(Madate1) < CLng(MaDate2) then ...

Et plutôt qu'une double boucle dans ta Recherche, tu pourrais faire une simple boucle dans le premier fichier et utiliser Find pour trouver la valeur dans l'autre. Si la valeur est trouvée, tu vérifies la deuxième qui est à côté avec OffSet(). Si elle n'est pas trouvée, tu peux faire un FindNext

MPi