Renfield au secours!

cs_Gendarmette Messages postés 104 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 14 janvier 2004 - 5 juin 2003 à 11:33
cs_Gendarmette Messages postés 104 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 14 janvier 2004 - 5 juin 2003 à 12:58
J'ai remplacé List1.Delete nam par List1.RemoveItem nam
Mais ça marche pas avec le Next j ça marque Next sans For alors kil y a un For! Ahhhhhhhhhh!

List3.Clear
Dim nam, nam2 As String
Dim n, m, i, j As Integer
n = List1.ListCount
For i = 0 To n - 1
List1.ListIndex = i
nam = List1.List(i)
m = List2.ListCount
For j = 0 To m - 1
List2.ListIndex = j
nam2 = List2.List(j)
If StrComp(nam, nam2, 1) = 0 And FileDateTime(List1.List(List1.ListIndex)) > FileDateTime(List2.List(List2.ListIndex)) Then
List3.AddItem nam
List1.RemoveItem nam
Else
List3.AddItem nam2
List2.RemoveItem nam
Next j
Next i
End Sub

6 réponses

euchbit Messages postés 28 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 6 juin 2003
5 juin 2003 à 11:50
je crois que ta oublié un end if à la fin
0
Boboss99 Messages postés 54 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 30 juin 2004
5 juin 2003 à 11:53
il ne manquerait pas un END IF par hasard ???

Boboss
0
cs_Gendarmette Messages postés 104 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 14 janvier 2004
5 juin 2003 à 12:01
Qd je met End If après Next i ça marche pas.
Si je le met avant Next j c la ligne
If StrComp(nam, nam2, 1) = 0 And FileDateTime(List1.List(List1.ListIndex)) > FileDateTime(List2.List(List2.ListIndex)) Then
qui plante : fichier non reconnu.
Je comprends plus rien, je débute, j'suis trop nulle!
0
Boboss99 Messages postés 54 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 30 juin 2004
5 juin 2003 à 12:16
tu commences ton if ds ta boucle alors il faut mettre end if aussi ds ta boucle, tu ne dois pas croiser tes instructions

for ...
if .... then

next
end if
(INTERDIT)

for ...
if ... then

end if
next
(CORRECT)

Boboss
0

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

Posez votre question
UnExPeCtEdSpy Messages postés 139 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 3 juillet 2003
5 juin 2003 à 12:28
bonjour
ça plante parce que tu fais des boucles jusqu'au nombres d'éléments mais dans la boucles du est ammené a supprimer des éléments et la borne de la boucle elle ne change pas, donc tu fini par pointer vers un elements inexistant et ça plante.

Ils faut que tu garde la notion de borne dynamique (laisser list.listcount au lieu de m) et que tu pense a réactualiser l'index courant dans la boucle a chaque fois que tu supprimme un éléments.

List3.Clear
i = 0
j = 0
Do While i <= List1.ListCount - 1
Do While j <= List2.ListCount - 1
If StrComp(List1.List(i), List2.List(j), 1) = 0 And      FileDateTime(List1.List(i)) > FileDateTime(List2.List(j)) Then
List3.AddItem(List1.List(i))
List1.RemoveItem (i)
i = i - 1 'permet d'annuler la progression de l'index
Else
 List3.AddItem(List2.List(j))
List2.RemoveItem (j)
j = j -1 'permet d'annuler la progression de l'index
end if
j = j +1 'Prigression de l'index
Loop
i = i + 1 'Progression de l'index
Loop
End Sub


J'ai pas testé mais ce doit etre comme ça :)
A+
,.~*`'^~.(^. :question) .^),.~^'`*~.
0
cs_Gendarmette Messages postés 104 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 14 janvier 2004
5 juin 2003 à 12:58
Merci pour tes explications, j'y vois un peu + clair.
Par contre dans ton code, ça plante à la ligne
If StrComp(List1.List(i), List2.List(j), 1) = 0 And FileDateTime(List1.List(i)) > FileDateTime(List2.List(j)) Then
0
Rejoignez-nous