>>> rechercher un montant <<<

A

ArnO

Guest
>>> rechercher un montant <<<

Bonjour à tous,

J'ai un pb auquel vous pourrez peut être m'aider.

Je travaille svt à rechercher des montants sous excel.
Est-ce que c'est possible avec un userform ou des formules de retrouver un montant précis à partir d'une base de chiffres ( je ne parle pas de tri :))? C'est à dire par exemple :

montant à trouver : 1000
solution possible à partir d'une base quelconque : 200+450+300+50 ou 500+200+300 ou etc...

Dans cet exemple je voudrais qu'Excel cherche ttes les solutions possibles pour touver 1000. J'ai ci-joint un fichier peut être plus explicite.

Je précise que je suis un gros Noob en VBA et g même du mal avec les fichiers de thierry lol :)

Donner moi une petite piste et j'essayerais de continuer, merci d'avance.

ArnO.
 

Pièces jointes

  • rechercher.zip
    2.5 KB · Affichages: 36
  • rechercher.zip
    2.5 KB · Affichages: 38
  • rechercher.zip
    2.5 KB · Affichages: 39
M

michel

Guest
Re: >>> rechercher un montant <<<

Bonjour Arno

Dans le fichier joint tu trouveras une procédure qui pourra peut être t'aider , créée par Myrna Larson ,

La macro ouvre une nouvelle feuille et va chercher toutes les combinaisons possibles dans la plage A3-A10
La cellule A2 définit le nombre de cellules constituant chaque combinaison :dans l'exemple =2 ( soit : a+c , a+b…a+c ..)
Si tu saisis 3 dans la cellule A2 on aura des résultats = x+y+z ….a+b+c….

Si la valeur = 1000 , la cellule est coloriée en rouge

Sans doute qu'un professionnel du VBA sur ce site , pour finaliser l'automatisation de ta requète

Bonne soirée
Michel
 

Pièces jointes

  • calcul_combinaisons.zip
    14.9 KB · Affichages: 78
@

@+Thierry

Guest
Re: >>> rechercher un montant <<<

Bonsoir Michel, Arn0, le Forum

Impressionnant Michel, ce fichier !!

Ben je pense que Arn0, cette fois si va complètement être dégouté du VBA sur ce coup là quand il va voir les code si il a déjà des difficulté avec les miens !! (lol)

Bonne Nuit
@+Thierry
 
M

michel

Guest
Re: >>> rechercher un montant <<<

Bonsoir @+Thierry , Bonsoir Arno

C'est vrai que la procédure est très impressionnate , ainsi que le resultat ... la créatrice est myrna larson . j'ai trouvé cette procédure sur le site http://www.excelabo.net/index.htm

j'ai eu du mal pour adapter la demande d'Arno et pour faire additionner les résultats et les colorier en rouge : rien que ça m'a donné une migraine pour au moins tout le week end qui arrive...

Bonne soirée
Michel
 
L

LaurentTBT

Guest
Re: >>> rechercher un montant <<<

Bonjour à tous.

La solution de Michel est en effet impressionnante.
J'ai une solution différente qui me parait plus simple (pour la compréhension du code VBA), mais qui n'est pas très rapide dès que la base est importante.

Mais bon, comme je l'ai débutée avant de voir la solution de Michel, je la poste quand même. Toute critique sera bienvenue...

@+
 

Pièces jointes

  • rechercher_ArnO.zip
    13.9 KB · Affichages: 54
L

LaurentTBT

Guest
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.
 
A

ArnO

Guest
Re: >>> rechercher un montant <<<

Bonjour o forum, laurentTBT, michel, thierry,

Tout d'abord merci de m'avoir aider pour mon pb :eek:)
C bizzare je m'attendais à des solutions de fou en VBA, j'ai pas été déçu lol :)

J'ai à peu près compris le focntionnement de ton fichier laurent, mais qd tu prends 2000 par exemple en chiffres, il te sort énormément de solutions, puis tu prends d'autres chiffres là juste après ca plante ;o)
Il me dde de déboguer, erreur d'éxécution 6' ,o)

Avec la solution de michel y fodrait presque une combinaison des 2 solutions :)

Pour ma part j'ai encore énormément de boulot en VBa lol :)

Merci à tous pour votre aide en tt cas :p

@++ ArnO
 
A

ArnO

Guest
Re: >>> rechercher un montant <<<

Re-tlm,

Dans la solution de michel est-ce qu'il serait possible de créer une cellule où on rentrerait le montant à trouver, parce que changer le montant à chaque fois dans le code, c chO :)

J'ai un peu peur de tt casser le code lol :eek:)

Merci pour le temps que vs avez accordé à mes posts :eek:@)

ArnO
 
A

ArnO

Guest
Re: >>> rechercher un montant <<<

Re bjr tlm,

j'ai essayé de mettre ds le fichier zip les 2/3 trucs qui seraient commode pour moi et j'ai fait qqles commentaires sur vos fichiers, même si c'est pas du vba mes commentaires lol :)

Mais c'est qd même du travail de prO :)

Merci à tous

ArnO
 

Pièces jointes

  • calculcombinaisons.zip
    14.9 KB · Affichages: 50
M

michel

Guest
Re: >>> rechercher un montant <<<

Bonsoir ArnO

dans un premier temps , tu peux déja remplacer

If cible = 5000 Then...

par

If cible = Sheets("feuil1").Range("g1").Value Then...


G1 étant la cellule ou tu indiques la valeur à rechercher

Bonee soirée
Michel
 
A

ArnO

Guest
Re: >>> rechercher un montant <<<

Bonjour michel,

Ok merci pour l'astuce pour la cellule; et comment je peux lui dire de m'inscrire dans la même feuille uniquement les solutions qui réalisent le montant déterminé.

Il ya une petite ligne en VBA à inscrire?

Merci d'avance.


ArnO
 
L

LaurentTBT

Guest
Re: >>> rechercher un montant <<<

Une petite réponse vite fait avant de me coucher.

Pour l'erreur 6, c'est un dépassement de capacité. Je pense que c'est du à la déclaration de variable du compeur n. le 2 puissance n est un nombre trop important qui dépasse la valeur limite du type de variable que j'ai choisi (J'ai pas le temps de vérifier). En modifiant ce type par un autre type "supérieur", cela devrait marcher. Mais ma méthode restera toujours très longue.

Je vais donc essayer de me pencher sur celle de Michel pour finaliser la présentation des résultats, si j'en ai le temps demain. Ce ne devrait pas être trop sorcier, le plus dur a été fait.

Bonne nuit.
 
M

michel

Guest
Re: >>> rechercher un montant <<<

Bonjour à tous

Arno , Excuse moi de ne pas t'avoir répondu plus tot ; Je ne t'ai pas oublié , mais je suis assez occupé en se moment . j'ai adapté le fichier rapidement , suite à ta demande et aux conseils de laurentTBT , pour boucler sur le même fichier

( je n'ai pas pu faire exactement ce que je voulais , mais normalement cela doit fonctionner )
Tous les calculs et résultats s'affichent dans la même feuille , et en une seule fois …

Les temps de calculs sont assez longs du fait du nombre d'éléments composants le tableau de base et du calcul de toutes les combinaisons en une seule fois …..sans compter les maladresses de ma bidouille vba…<;o)


Bon week end
Michel
 

Pièces jointes

  • calcul_combinaisons_V03.zip
    17.2 KB · Affichages: 62

Discussions similaires

Statistiques des forums

Discussions
313 091
Messages
2 095 195
Membres
106 219
dernier inscrit
aymardinho