TiteZ
Messages postés61Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention21 août 2007
-
28 mai 2007 à 17:13
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
TiteZ
Messages postés61Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention21 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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
TiteZ
Messages postés61Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention21 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
julien_guy
Messages postés9Date d'inscriptionmardi 23 novembre 2004StatutMembreDerniè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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 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