Faire une boucle avec une liste !?

cobaltone Messages postés 116 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 25 avril 2012 - 23 août 2005 à 23:28
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 - 24 août 2005 à 08:28
Bonjour a tous,

j'ai un soucis j'ai un code que je veut utiliser a l 'interieur d'une boucle avec une liste de la façon suivante:

=> pour tout les fichier dans la liste

executer code

=> fin de boucle

or si je ne parvient pas a trouver la sintaxe et j'ai un message d' erreur!

si je fait :

for each item on list1.list
-code ( recupération d'infos dans un des fichiers )
next list1.list

ça ne marche pas j'ai essayé bcp de chose et je bloque bettement, alors merci d'avance a qui pourra m'eclairer...

|||CoBaLtOnE|||

9 réponses

cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
23 août 2005 à 23:37
correction

for each item in list1.list
-code ( recupération d'infos dans un des fichiers )
next item

Hassen TUNISIE
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
23 août 2005 à 23:40
Salut,


Je suppose que ta ListBox est nommée List



' Remplissage
Dim i As Single

For i = 1 To 10

List.AddItem " val " & i

Next i





Dim nbVal As Single

nbVal = List.ListCount - 1 ' -1 car els index de la list commencent à zéro



'et List.ListCount retourne nb elmt de la liste

For i = 0 To nbVal

List.ListIndex = i ' Se positionner sur une ligne de la liste

Debug.Print List.Text ' Acces à la valeur dela ligne

Next i


Si c'est pas bon, essais de m'expliquer ton pb ...


++

Zlub
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
23 août 2005 à 23:43
Salut,

J'aime pas trop le each qui à l'execution est plus long que la boucle For.

Mais certe c'est plus pratique à utiliser.... encore que ...

++

Zlub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 août 2005 à 00:02
salut, je reprend la dernière boucle de Zlub :

For i = 0 To nbVal
Debug.Print List1.ListIndex(i)
Next i

normalement c'est bon. çà ne revient pas au même, selon la taille de la liste ;)
sinon, je crois que ton problème vient du fait que "Item" est une propriété qui n'existe pas dans une ListBox

PCPT
0

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

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
24 août 2005 à 00:04
Salut,

Oui exact pour le ListIndex(i) ... j'ai cracké moi ...

++

Zlub
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 août 2005 à 07:48
ZLub : D'où le For Each est plus long que le For->Next ? Microsoft
se tromperait alors dans sa doc en préconisant le For->Each à la
place du For->Next dès qu'on touche à des objets ?



Et non, après test, le For->Each est plus rapide (surtout si on se sert de l'objet dans la boucle !).



Il est bien plus rapide par exemple de faire ceci :



For Each i In ListView.ListItems



Debug.Print i.Text & i.ToolTipText & i.Tag

DoEvents



Next i





que cela :



For i = 1 To ListView.ListItems.Count



Debug.Print
ListView.ListItems(i).Text & ListView.ListItems(i).ToolTipText
& ListView.ListItems(i).Tag

DoEvents



Next i



(test sur une listview contenant 5000 éléments sans colonnes : 1537 ms pour le For->Next, et 1357 pour le For->Each).



Ceci est sûrement dû au fait que dans le For->Each, on obtient un
objet directement exploitable alors que dans le For->Next, il faut
que VB récupère l'objet à plusieurs reprises pour chaque tour de
boucle, d'où une plus grande rapidité pour le For->Each !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
24 août 2005 à 07:58
Salut,

Bon oki,

me semblait que le for each était plus gourmand ...



thx

++

Zlub
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 août 2005 à 08:23
Il est plus gourmand en mémoire, ainsi qu'en rapidité d'éxécution même
de la boucle vu qu'on travaille sur des objets et non plus sur des
entiers, mais si on utilise les objets de la boucle (ce qui est le cas
dans 99 % des cas quand même !) alors il est plus rapide.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
24 août 2005 à 08:28
Salut,

vi vi j'avais compris, dans d'autre langage où for each existe ça se passe de la même façon... mais merçi pour tes précisions.

++

Zlub
0
Rejoignez-nous