OVH Cloud OVH Cloud

For Each .....Next

4 réponses
Avatar
Jacquouille
Bonsoir
Dans une correction de devoir (macro ici pondue et corrigée de mains de
Maître par un Grand Maître - que je remercie très sincèrement -, lequel
suggère (entre autres choses...)
For each c .....
.....
Next c
Or, j'ai vu à plusieurs reprises le Next seul.
Est-ce plus mieux le Next c, ou moins mieux ?
Au bon plaisir de vous lire
Merci et bonne fin de WE
Jacques, embourrasqué de neige.
--
Jacquouille conseille : http://www.excelabo.net

NoSpam_j.thiernesse@skynet.be

4 réponses

Avatar
FxM
Bonsoir Jacques,

Tu peux utiliser l'un ou l'autre (avec ou sans). Mais attention lors
d'imbrications de boucles ...

Exemple :
for a = ...
for b = ...
next a
next b
En précisant les variables, tu obtiens une erreur. Si tu les omets, pas
d'erreur mais peut-être pas le fonctionnement voulu.

Un moyen d'éviter les fausses imbrications tel que dans l'exemple, un
bon moyen est d'indenter les macros. Décaler de x vers la droite pour
chaque entrée dans for, while, do, if, ... Remettre plus à gauche à la
sortie.

@+
FxM



Jacquouille wrote:

Bonsoir
Dans une correction de devoir (macro ici pondue et corrigée de mains de
Maître par un Grand Maître - que je remercie très sincèrement -, lequel
suggère (entre autres choses...)
For each c .....
......
Next c
Or, j'ai vu à plusieurs reprises le Next seul.
Est-ce plus mieux le Next c, ou moins mieux ?
Au bon plaisir de vous lire
Merci et bonne fin de WE
Jacques, embourrasqué de neige.
--
Jacquouille conseille : http://www.excelabo.net






Avatar
Michel Gaboly
Bonsoir Jacquouille,

Selon moi aucune différence, à part une meilleure lisibilité en précisant
le nom de la variable.

Comme le dit FxM, une bonne indentation rend les choses encore + claires.

Personellement, je décale de 2x pour chaque If, For, With ... et de 1x pour
les instructions "normales" situées entre 2 mots-clefs pour lesquels je fais
un décalage de 2 x :

Pas

Sub Toto
Dim c as range, i as Integer
With Range("RéfVentes")
If Condition Then
For i = 1 to ...

Next i
End If
End With
End Sub

Mais

Sub Toto
Dim c as range, i as Integer
With Range("RéfVentes")
If Condition Then
For i = 1 to ...

Next i
End If
End With
End Sub

Ce qui fait ressortir les instructions pour lesquelles une modif du niveau
d'indentation n'est pas justifiée :

Sub Toto
Dim c as range, i as Integer, Ref as Range
With Range("RéfVentes")
Set Ref = ...
If Condition Then
For i = 1 to ...

Next i
End If
End With
Debug.Print ...
End Sub



Bonsoir
Dans une correction de devoir (macro ici pondue et corrigée de mains de
Maître par un Grand Maître - que je remercie très sincèrement -, lequel
suggère (entre autres choses...)
For each c .....
.....
Next c
Or, j'ai vu à plusieurs reprises le Next seul.
Est-ce plus mieux le Next c, ou moins mieux ?
Au bon plaisir de vous lire
Merci et bonne fin de WE
Jacques, embourrasqué de neige.
--
Jacquouille conseille : http://www.excelabo.net




--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
ChrisV
Salut Jacquouille,

Je rejoins tout à fait de l'avis de François et de Michel sur les deux
points évoqués.
Un petit rappel également de l'aide sur la syntaxe For Each...Next:

For Each element In group
...
Next [element]

Si vous omettez l'argument element dans une instruction Next, l'exécution
continue comme si element était inclus. Si une instruction Next est
rencontrée avant l'instruction For correspondante, une erreur se produit.


ChrisV
[membre de l'association des mpfiens contre les devoirs du dimanche !]


"Jacquouille" a écrit dans le message de
news:
Bonsoir
Dans une correction de devoir (macro ici pondue et corrigée de mains de
Maître par un Grand Maître - que je remercie très sincèrement -, lequel
suggère (entre autres choses...)
For each c .....
.....
Next c
Or, j'ai vu à plusieurs reprises le Next seul.
Est-ce plus mieux le Next c, ou moins mieux ?
Au bon plaisir de vous lire
Merci et bonne fin de WE
Jacques, embourrasqué de neige.
--
Jacquouille conseille : http://www.excelabo.net






Avatar
j
d'accord avec tout ce qui a été dit, "for each zaza... next zaza", c'est à
peine plus fatiguant à écrire mais tellement plus facile à lire
petite remarque toutefois, pour ceux qui font du VBS, pas de ""next zaza" en
VBS, donc attention lors de la conversion de macros VBA en VBS...


"Jacquouille" a écrit dans le message de
news:
Bonsoir
Dans une correction de devoir (macro ici pondue et corrigée de mains de
Maître par un Grand Maître - que je remercie très sincèrement -, lequel
suggère (entre autres choses...)
For each c .....
.....
Next c
Or, j'ai vu à plusieurs reprises le Next seul.
Est-ce plus mieux le Next c, ou moins mieux ?
Au bon plaisir de vous lire
Merci et bonne fin de WE
Jacques, embourrasqué de neige.
--
Jacquouille conseille : http://www.excelabo.net