Algorithme : toutes les combinaisons possibles dans un tableau de 2 par 7

Résolu/Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - Modifié le 24 janv. 2021 à 11:50
ccm81 Messages postés 10815 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 18 février 2024 - 2 avril 2021 à 21:50


Bonjour à tous; avant de me lancer dans la programmation de ma macro excel j'ai voulu me faire l'algorithme du code car je voyais pas comment le faire mais je tourne en rond...

J'essaye de tester toutes les combinaisons possibles enfin de trouver celle qui s'approche le plus de ma valeur cible, mais j'ai je ne vois pas comment faire.

Voici mon problème :
Vous avez un tableau comme sur l'image.
Ma valeur cible est 180 (mais la valeur cible peut changer)
En sommant qu'une valeur sur chaque colonne (que ce soit sur la ligne 28 ou la ligne 29) et en ajoutant 179.667 (valeur qui est modifiable) nous devons arriver le plus proche possible de 180.

Ne voyant mais de formule mathématique pour résoudre mon problème, j'ai décidé de tester toutes les solutions possibles.

Voici le début de l'algorithme que j'ai fait mais il n'est pas très concluant ....


Sub trouverCible()
'valeurCible
'valInter
'valTrouver
'valTrouverAnc = 100000
'valAjouter = 179.667
'Pour prend i = 28 à 29 (permet de dire les numéros de ligne à traiter dans excel)
'Pour j = 2 allant à 8 (permet de dire les numéros de colonne à traiter dans excel)
'Pour k = 0 a 1
'i = i - k
'valInter = Cellls(i,j)
'valTrouver = valTrouver + valInter
'Fin Pour
'Fin Pour
'Si (valTrouverAnc +valAjouter ) - valCible>(valTrouver+valAjouter )- valCible
'valTrouverAnc=valTrouver
'Fin si
'Fin Pour
Fin


Je pensais utiliser du récursif pour résoudre mon problème mais je vois pas comment l’utiliser ...
Merci d'avance pour votre aide.
J'espère que j'aurais été claire.
Merci d'avance de votre aide.
Cordialement.

5 réponses

yg_be Messages postés 22479 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 février 2024 1 445
24 janv. 2021 à 14:40
bonjour,
en laissant la récursivité de coté, puisqu'elle ne t'inspire pas, je pense à ces approches:
1) comment ferais-tu à la main, comment t'organiserais-tu pour compter toutes les sommes et trouver la meilleure? tu peux ensuite programmer cela
2) tu dois calculer 128 sommes. tu pourrais donc faire une boucle avec un indice allant de 1 à 127, et, utiliser l'indice pour calculer pour chaque colonne, quelle ligne utiliser.
3) imbriquer sept boucles, ce qui t'inspirera peut-être ensuite une approche récursive
0