Difficultés pour améliorer la rapidité d'une itération lourde. (Macro)

morest

XLDnaute Occasionnel
Salut à tous,

Voilà je suis confronté à un problème pénible. J'ai créé une macro pour faire l'itération de calcul. Le problème est que c'est très lent et je cherche une méthode pour réduire considérablement le temps de la macro.

Voici donc une fiche excel avec la fameuse macro, en cliquant sur les ovales vous déclenchez celle que j'avais initialement fait ("très lent") puis amélioré ("lent") en cherchant sur le forum avec la fonction "Application.ScreenUpdating = True".

Le but est plutôt simple, chacune des cellules en colonne "A" doit atteindre la valeur en "B". La macro s’arrête après avoir balayé la totalité des possibilités.

Merci beaucoup d'avoir pris le temps de lire mon post et également merci si vous pouvez m'aider.
@+
 

Pièces jointes

  • Classeur1.xls
    39.5 KB · Affichages: 77
  • Classeur1.xls
    39.5 KB · Affichages: 95
  • Classeur1.xls
    39.5 KB · Affichages: 81

Dranreb

XLDnaute Barbatruc
Re : Difficultés pour améliorer la rapidité d'une itération lourde. (Macro)

Bonjour.
Parce que, du moins c'est ce que j'ai intuitivement cru comprendre, les autres combinaisons des 3ières valeurs formant avec la 4ième un multiples de 4 ne l'intéressent plus pour cette valeur ci de la 4ième, dès lors qu'il a trouvé la 1ère d'entre elles. Mais pourquoi tout ça, mystère.
En somme au lieu d'un Exit For sur la boucle la plus interne il faudrait sans doute un GoTo 1 renvoyant au Next de la plus grande boucle.

Pendant que j'interviens je voudrais revenir sur un truc:
Je comprends pas ça semble pas si compliqué et avec le Do et Loop c'est facile à faire par contre en For / Next c'est la lutte...
C'est normal. Il ne faut pas hésiter, à mon avis, à préférer le Do … Loop dès lors qu'on sort un tant soit peu du cadre de fonctionnement du For … Next
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Difficultés pour améliorer la rapidité d'une itération lourde. (Macro)

Re...
Bonjour Dranreb.

Bonjour.
Parce que, du moins c'est ce que j'ai intuitivement cru comprendre, les autres combinaisons des 3ières valeurs formant avec la 4ième un multiples de 4 ne l'intéressent plus pour cette valeur ci de la 4ième, dès lors qu'il a trouvé la 1ère d'entre elles. Mais pourquoi tout ça, mystère.
En somme au lieu d'un Exit For sur la boucle la plus interne il faudrait sans doute un GoTo 1 renvoyant au Next de la plus grande boucle.
C'est effectivement l'hypothèse que j'ai retenue pour ma réponse #28.
Mais c'est en contradiction avec :
A1 = 2 / A2 = 2 / A3 = 1 / A4 = 1 ->>> Enregistrement puis arret pour faire A4 = A4 + 1 car multiple de 4
A1 = 1 / A2 = 1 / A3 = 2 / A4 = 1
A1 = 2 / A2 = 1 / A3 = 2 / A4 = 1
A1 = 1 / A2 = 2 / A3 = 2 / A4 = 1 ->>> Enregistrement puis arret pour faire A4 = A4 + 1 car multiple de 4
Si on "enregistre" pour 2/2/1/1, on n'"enregistre" certainement pas pour 1/2/2/1 puisque cette combinaison n'est pas testée...

Mystère...​


ROGER2327
#6562


Mercredi 11 Clinamen 140 (Saint Maquereau, Intercesseur - fête Suprême Quarte)
13 Germinal An CCXXI, 6,5982h - morille
2013-W14-2T15:50:09Z
 

Statistiques des forums

Discussions
312 520
Messages
2 089 277
Membres
104 083
dernier inscrit
hecko