Boucles for each imbriquées

A

anna

Guest
Bonjour,
petit problème avec une fonction utilisant 2 Range et qui doit comparer des valeurs entre ces 2 Range. Le pb est que ma fonction ne passe pas au mouv1 suivant, les tests ne sont faits que pour le premier élèment de Plage1 et pour le premier élèment de Plage2
Pouvez-vous aussi m'expliquer la nécessité de metrre les Exit For avant le Next (je ne trouve ça très logique). Merci (car l'aide VB n'est pas installée sur mon poste)

'Pour chaque mouvement de la plage des mvts sélectionnés dans la feuille Mouvements
For Each mouv1 In Plage1
code1 = mouv1.Offset(0, 3)
venac = mouv1.Offset(0, 7)

For Each mouv2 In Plage2
code2 = mouv2.Offset(0, 1)
nb2 = mouv2.Offset(0, 3)
'Si les 2 codes ISIN sont égaux:
If code1 = code2 Then
' on regarde si c'est une vente
If mouv1.Offset(0, 5) = "Vente" Then
'si oui: le nb de parts devient négatif
venac = venac * (-1)
End If
'on affecte le nb de parts du mouvements au nb de parts du nv ptf
nbfinal = nb2 + venac
mouv2.Offset(0, 3) = nbfinal

End If


Exit For
Next mouv2

Exit For
Next mouv1
 
M

Minick

Guest
Salut,

La reponse est dans la question

les Exit For te font quitter les boucles For dès la premiere occurrances de celles ci

donc forcement tu passes une fois dans mouv1 et une fois dans mouv2 et c tout
Par contre cela peut etre utile de quitter ta boucle For pour gagner en temps d'execution

Par exemple si tu ne peux avoir 2 fois l'egalité entre le code ISIN de mouv1 et mouv2 tu peux mettre un Exit For apres
mouv2.Offset(0, 3) = nbfinal

sinon Il te faut donc supprimer c 2 petites betes méchantes

@+

Minick
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
313 125
Messages
2 095 510
Membres
106 276
dernier inscrit
sou'