Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion JANJAN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 :
[table="width: 500, class: grid, align: center"]
[tr]
[td]A[/td]
[td]B[/td]
[td]C[/td]
[td]D[/td]
[td]E[/td]
[td]F[/td]
[/tr]
[tr]
[td]996[/td]
[td]371[/td]
[td]642[/td]
[td]262[/td]
[td]669[/td]
[td]539[/td]
[/tr]
[tr]
[td]509[/td]
[td]196[/td]
[td]335[/td]
[td]142[/td]
[td]341[/td]
[td]273[/td]
[/tr]
[tr]
[td]238[/td]
[td]83[/td]
[td]152[/td]
[td]62[/td]
[td]143[/td]
[td]127[/td]
[/tr]
[tr]
[td]99[/td]
[td]40[/td]
[td]68[/td]
[td]29[/td]
[td]62[/td]
[td]55[/td]
[/tr]
[tr]
[td]42[/td]
[td]15[/td]
[td]29[/td]
[td]10[/td]
[td]23[/td]
[td]20[/td]
[/tr]
[/table]

La solution proposée sera la suivante :

[table="width: 500, class: grid, align: center"]
[tr]
[td]A[/td]
[td]0[/td]
[td]371[/td]
[td]335[/td]
[td]29[/td]
[td]341[/td]
[td]20[/td]
[/tr]
[tr]
[td]B[/td]
[td]238[/td]
[td]0[/td]
[td]68[/td]
[td]62[/td]
[td]669[/td]
[td]55[/td]
[/tr]
[tr]
[td]C[/td]
[td]42[/td]
[td]196[/td]
[td]0[/td]
[td]262[/td]
[td]62[/td]
[td]539[/td]
[/tr]
[tr]
[td]D[/td]
[td]509[/td]
[td]15[/td]
[td]152[/td]
[td]0[/td]
[td]143[/td]
[td]273[/td]
[/tr]
[tr]
[td]E[/td]
[td]99[/td]
[td]83[/td]
[td]642[/td]
[td]142[/td]
[td]0[/td]
[td]127[/td]
[/tr]
[tr]
[td]F[/td]
[td]996[/td]
[td]40[/td]
[td]29[/td]
[td]10[/td]
[td]23[/td]
[td]0[/td]
[/tr]
[/table]


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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2013 Aide VBA
Réponses
4
Affichages
1 K
Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…