Probleme de date

Résolu
TiteZ Messages postés 61 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 21 août 2007 - 28 mai 2007 à 17:13
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 29 mai 2007 à 00:24
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

TiteZ Messages postés 61 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 21 août 2007
28 mai 2007 à 22:23
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
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
28 mai 2007 à 18:05
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
0
TiteZ Messages postés 61 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 21 août 2007
28 mai 2007 à 19:59
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.
0
julien_guy Messages postés 9 Date d'inscription mardi 23 novembre 2004 Statut Membre Dernière intervention 3 octobre 2007
28 mai 2007 à 21:02
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
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
29 mai 2007 à 00:24
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
0