Re: >>> rechercher un montant <<<
Bonsoir Michel, bonsoir tout le monde.
Oui, Michel, ma solution fait apparaître toutes les combinaisons possibles.
Pour la tienne, il suffirait de rajouter une petite procédure qui lancerait ta solution autant de fois que le nombre de données dans la base:
Sub ToutesCombinaisons()
For i=1 to range("A65536").End(xlUp).Row - 2
Range("A2")=i
ListPermutations
next i
end sub
Ensuite, il ne restera qu'un petit traitement pour afficher tous les résultats sur une seule et même feuille.
La question est de savoir quelle solution sera la plus rapide. Je n'ai pas le temps d'étudier tes procédures en détails.
Pour la mienne, je calcule toutes les sommes possibles entre N nombres, soit 2 puissance N combinaisons possibles. Avec mon ordi préhistorique, je n'ai pas eu le courage de laisser tourner ma procédure avec la base de données de l'exemple initial d'Arn0!
En fait, comme je l'ai expliqué dans mon fichier joint, je fait une seule petite optimisation en supprimant de la base tous les nombres supérieurs à la somme recherchée. Il faudrait poursuivre cette optimisation plus loin: à chaque fois qu'on choisit 1 nombres parmis les N, on élimine dans les N-1 nombres restant qui sont supérieurs au reste pour atteindre la somme finale. Idem quand on en a choisi 2, 3 ... (J'espère que vous me suivez, car c'est pas évident à expliquer). Je n'ai pas trouvé d'algorythme pour cela.
Dernière petite remarque sur ma solution, il faudrait rajouter un petit traitement des doublons, car si, par exemple, la base est 1, 1 et 1, et la somme 2, ma procédure donnera trois fois la solution 1+1 (le premier et le deuxième 1, mais aussi le premier et le troisième, et enfin le deuxième et le troisième). Avec tout le travail effectué par les habitués du forum sur ce sujet des doublons, cela ne devrait pas poser trop de problème!
Voilà, comme d'hab, je me suis lancé dans un roman!
Allez, bon courage à tous et bonne nuit.