Combinaison de nombre : pb de timer + amélioration vitesse d'exécution

JANJAN

XLDnaute Nouveau
Bonsoir le forum

Dans mon fichier, le but du programme est de trouver une combinaison unique de 5 nombres à partir d'un tableau composé de 6 lignes et 5 colonnes, soit 30 nombres et avec plusieurs pré-requis :


  1. - chaque combinaison trouvée devra rentrer dans une fourchette calculée sur une moyenne de tous les nombres du tableau)
  2. - La combinaison A ne doit pas prendre de chiffres provenant de sa propre colonne (ici : 996-509-238-99 & 42) et ainsi de suite pour les autres combinaisons.
  3. - Les nombres pris pour la combinaison de A ne peuvent plus se retrouver dans une autre combinaison.



Le tableau se compose (par-exemple) de :
ABCDEF
996371642262669539
509196335142341273
2388315262143127
994068296255
421529102320

La solution proposée sera la suivante :

A03713352934120
B2380686266955
C42196026262539
D509151520143273
E99836421420127
F996402910230


J'ai fait plusieurs tests et tous les tests ont été concluants, mais plusieurs petites choses me chagrinent ^^

J'ai inséré dans le programme un timer et pour la même solution, le temps indiqué a un delta de pratiquement 1 minute, ce que je ne m'explique pas ?!?

Par-ailleurs, j'aurai aimé améliorer le temps d'exécution du programme, mais mes connaissances en Vba sont assez limitées, et je ne vois pas par quel biais je peux le faire.

Et dernier petit point, j'ai l'impression, mais ce n'est peut-être qu'une impression que par moment le programme saute des étapes, mais je sais pas non plus comment être sur qu'il exécute correctement l'ensemble du programme.

Vous trouverez donc ci-joint mon petit fichier, enfin le lien pour y accéder, et j'espère que vous parviendrez à m'aider à résoudre mes petits problèmes.

Merci d'avance

Document Cjoint
 

Jam

XLDnaute Accro
Re : Combinaison de nombre : pb de timer + amélioration vitesse d'exécution

Salut Janjan,

J'ai jeté un oeil à ton fichier. N'ayant pas beaucoup de temps je vais me borner à te donner quelques conseils:
- Utilisation de GOTO: beurk, beurk, c'est à proscrire...c'est une vieille instruction de feu le BASIC/COBOL qui ne doit plus être utilisée en programmation ! Un GOTO peut forcément être remplacé par un appel à une fonction ou une autre façon de programmer
- Au lieu de travailler sur des cellules (c'est très lent), utilise le tableau en mémoire (instruction Dim): Dans ton cas c'est incommensurablement plus rapide ! Au lieu de travailler sur des cellules tu travailles sur des emplacement mémoires. La différence de vitesse est colossale. Le principe: tu "colles" ton tableau en mémoire, tu travailles sur tes tableaux en mémoire puis tu retournes le résultat dans ton classeur.

Pour ton dernier point: le seul moyen de vérifier que ton programme ne saute pas d'étape c'est de le faire fonctionner en pas à pas et vérifier à chaque étape que tout est ok. Petit indice: les GOTO sont certainement responsables de ces sauts ;)

Quelques sources pour t'aider:
Utiliser les variables tableaux en VBA Excel
Ce lien n'existe plus
Cours VBA : utilisations des tableaux

Bon courage
 

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260