La fameuse boucle "For Each... Next" - VB/VBA/VBS - Programmation
Marsh Posté le 11-06-2016 à 20:20:32
Bonjour,
même avec une explication claire & exhaustive je ne pense pas que ce soit possible !
Marsh Posté le 12-06-2016 à 09:06:30
Marc L a écrit : |
Code :
|
Cela implique bien entendu que l'élément retourné par la première itération soit toujours le même et soit bien celui qu'on attend.
Marsh Posté le 12-06-2016 à 09:48:17
Si le premier traitement est systématiquement différent des autres, foreach n'est pas la structure adaptée. En terme de complexité, il vaut mieux réaliser le premier traitement avant la boucle puis itérer à partir du deuxième élément avec un for pour ne pas se taper une évaluation inutile du if à chaque itération.
Marsh Posté le 12-06-2016 à 12:35:02
Bien vu leonHard mais je n'avais pas compris cela, comme quoi une présentation initiale claire n'est pas du luxe !
« C'est simple ! » comme ils disent chez Renault …
Et plus il y a d'éléments, plus je rejoins l'avis de Trajet !
Marsh Posté le 13-06-2016 à 07:53:29
Marc L a écrit : |
Ben mon bout de code montre qu'il y a peut-être une solution (encore que les conditions de l'OP ne sont pas claire), mais ce n'est pas parce qu'on peut le faire que c'est une bonne idée de le faire. Imaginons par exemple qu'un for-each parcoure tous les éléments d'un ensemble mais sans garantir l'ordre de parcours (on garantit juste que tous les éléments sont visités exactement une fois), ben c'est cuit. Il vaut mieux éviter le genre de bricolage que j'ai proposé..
Ou alors on lance un concours de celui qui trouve la solution la plus crade et inefficace possible pour ce problème
Marsh Posté le 13-06-2016 à 10:59:22
Bonjour et merci pour vos réponses, je vais essayer d'adapter à mon problème
Marsh Posté le 14-06-2016 à 14:34:37
Merci leonhard, ça marche bien avec une condition "If... Else... EndIf"
Marsh Posté le 15-06-2016 à 11:01:51
Sauf que le if s'exécute à chaque itération alors qu'il n'est vrai qu'une fois. Pas très optimisé comme code et cela ajoute de la complexité cyclomatique.
Mieux vaudrait comme le dit Trajet :
Citation : |
Marsh Posté le 15-06-2016 à 19:44:48
PierreC a écrit : Sauf que le if s'exécute à chaque itération alors qu'il n'est vrai qu'une fois. Pas très optimisé comme code et cela ajoute de la complexité cyclomatique.
|
Mouais, je ne connais pas VB[A-Z]* mais normalement n'importe quel optimisateur et JIT est capable de sortir ce code de la boucle de lui même sans rien avoir à demander.
Je suis entièrement d'accord que sortir le code "spécial" de la boucle est plus élégant dans le code source, mais si l'environnement ne propose pas automatiquement ce genre d'optimisation pour le code binaire, alors faut absolument retourner au gcc (ou mieux au "MIX" pour ceussent qui connaissent ).
Marsh Posté le 10-06-2016 à 17:24:07
Salut all,
J'ai besoin de vos lumières
Pour faire rapide : J'ai besoin de faire une boucle "For Each..." avec la première itération différente du reste.
Est ce que c'est possible ?
Merci beaucoup de votre temps