Pourquoi une Loop "For/Next" s'arrête après un grand nombre d'itérations

Bonjour,

J'ai rédiger la macro inclue dans le fichier ("Test_for_Loop.xlsm") ci-joint: L'activation de cette macro se fait par "Crtl m"

La macro a été simplifiée pour mieux expliquer le problème. Il s'agit de 5 boucles "For/Next" imbriquée les une dans les autres

J'ai ajouté une "StatusBar" afin de cerner le problème.

Quelqu'un peut-il m'expliquer pourquoi l’exécution de la macro s'arrête lorsque la variable "compteur" de la macro atteint 17296 ?

Cet arrêt n'est pas du à la valeur 17296 elle-même car si je défini la valeur de départ de "compteur" à 10000 (au lieu de 0) par exemple, alors la macro s'arrête à 27296 etc..

Merci par avance et meilleures salutations

Youki

9test-for-loop.xlsm (19.02 Ko)

Bonsoir,

la macro s'arrête car le nombre de tours est "fini".

Pourquoi si vite ? Peut-être parce que les variables de boucles sont dépendantes des unes des autres.

Lorsque A3 vaut 45, la boucle suivante celle de A4 ne vat que de 46 à 50, soit seulement 5 tours...

Donc avec ce cumuls de tours en moins la macro ne tourne que 17296 fois... Non ?

@ bientôt

LouReeD

Au passage ...

For a1 = 1 To 1
     For a2 = a1 + 1 To 2

signifie que a1 ne prend que la valeur 1 et a2 la valeur 2 ... pourquoi en faire une boucle ?

si je mets

max_tirage = 10

il s'arrête à 56 , voici les 56 valeurs

 1  2  3  4  5 
 1  2  3  4  6 
 1  2  3  4  7 
 1  2  3  4  8 
 1  2  3  4  9 
 1  2  3  4  10 
 1  2  3  5  6 
 1  2  3  5  7 
 1  2  3  5  8 
 1  2  3  5  9 
 1  2  3  5  10 
 1  2  3  6  7 
 1  2  3  6  8 
 1  2  3  6  9 
 1  2  3  6  10 
 1  2  3  7  8 
 1  2  3  7  9 
 1  2  3  7  10 
 1  2  3  8  9 
 1  2  3  8  10 
 1  2  3  9  10 
 1  2  4  5  6 
 1  2  4  5  7 
 1  2  4  5  8 
 1  2  4  5  9 
 1  2  4  5  10 
 1  2  4  6  7 
 1  2  4  6  8 
 1  2  4  6  9 
 1  2  4  6  10 
 1  2  4  7  8 
 1  2  4  7  9 
 1  2  4  7  10 
 1  2  4  8  9 
 1  2  4  8  10 
 1  2  4  9  10 
 1  2  5  6  7 
 1  2  5  6  8 
 1  2  5  6  9 
 1  2  5  6  10 
 1  2  5  7  8 
 1  2  5  7  9 
 1  2  5  7  10 
 1  2  5  8  9 
 1  2  5  8  10 
 1  2  5  9  10 
 1  2  6  7  8 
 1  2  6  7  9 
 1  2  6  7  10 
 1  2  6  8  9 
 1  2  6  8  10 
 1  2  6  9  10 
 1  2  7  8  9 
 1  2  7  8  10 
 1  2  7  9  10 
 1  2  8  9  10 

avec 50, l'arrêt se fait bien ici :

 1  2  48  49  50 
Nb_aleatoire_systematique compteur = 17296  Pour un maximum de rotation = 103776

et forcément si tu ajoutes un offset de 10000 tu auras 27296

Ton code est bon, je ne vois pas où est le problème !

Bonjour LouReeD

Je pense aussi qu'il faudrait mettre

        For a3 = a2 + 1 To max_tirage - 2
            For a4 = a3 + 1 To max_tirage - 1
                For a5 = a4 + 1 To max_tirage

Bonsoir Steelson !

au passage :

Au passage ...

Code : Sélectionner et copier le code

For a1 = 1 To 1

For a2 = a1 + 1 To 2

signifie que a1 ne prend que la valeur 1 et a2 la valeur 2 ... pourquoi en faire une boucle ?

Mais avant il y a :

La macro a été simplifiée pour mieux expliquer le problème

Je pense que cela vient de là, non ?

Sinon avec le tableau de Steelson on voit bien que les boucles sont de plus en plus petites et du coup cela réduit le nombre de rotation.

@ bientôt

LouReeD

Bonjour,

encore un que ça fatigue trop de dire merci.

eric

Bonsoir,

merci alors...

@ bientôt

LouReeD

On n'est jamais si bien servi que par soi-même

Tu peux changer d'avatar stp ? ça donne envie...

Rechercher des sujets similaires à "pourquoi loop next arrete grand nombre iterations"