Menu

Combinaison de sommes égales à valeur cible [Résolu/Fermé]

- - Dernière réponse : hicham22294
Messages postés
1
Date d'inscription
dimanche 5 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
- 5 mai 2019 à 00:09
Bonjour,
En utilisant Microsoft Excel 2007 je veux faire ce qui suit:
J'ai une base de données de valeurs (chiffres) et j'ai une valeur cible. Je veux trouver toutes les combinaisons de sommes des chiffres possibles (à partir de la base de données) qui égales la valeur cible.

Est ce possible?


Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
18
Merci
Bonjour,

Voici donc la dernière version qui traite nombres positifs et négatifs :
https://mon-partage.fr/f/DVIe7uJu/

eric


Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.

Dire « Merci » 18

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39040 internautes nous ont dit merci ce mois-ci

Je vous remercie énormément pour ce fichier qui me sera très très utile
Super boulot, merci pour ton travail ! :D
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 > Niko -
Bonjour,

Merci, mais il a évolué depuis...
La v4.3.3 : https://mon-partage.fr/f/DVIe7uJu/
eric
> eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
-
Bonjour Eric, merci pour votre aide mais le fichier n'est plus accessible, pourriez-vous en remettre un lien ?

Merci beaucoup
Naxos
hicham22294
Messages postés
1
Date d'inscription
dimanche 5 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
> eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
-
Bonjour Eriiic

J'ai pu télécharger une ancienne version de votre fichier, il est vraiment top. j'ai vu que vous aviez aussi envoyer une version début 2019, serait-il possible de réactiver le lien?

Cordialement

Hicham
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
1
Merci
Bonsoir,

En fait ce n'est pas des plantages, c'est plus un problème de reprise de main sur la macro lors des calculs longs.
Avec 65 valeurs ça peut être très long, plusieurs heures... Il faut explorer toutes les combinaisons, plusieurs millions.
Si tu mets nbTermesmini=7, tu exclues toutes les combinaisons des sommes de 2 à 6 termes, tu pourras voir que la solution est trouvée assez rapidement (en 30s, sans attendre des heures).

J'ai changé un peu la logique et ajouté un formulaire qui donne des éléments pour voir l'avancée de la macro. Il permet aussi de faire des pauses ou de stopper l'analyse.
http://cjoint.com/?DCrxbr4PYST

eric

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Mon programme n'est pas adapté à ton problème.
Démarre un nouveau fil ('Posez votre question') sans oublier d'y joindre un extrait représentatif de ton fichier.
cjoint.com et coller dans ta question le lien fourni.

eric
Ok merci,
J'ai créé un nouveau fil dans "bureautique excel";

Fanny
Je travaille dans l'extrusion d'aluminium télécharge le complément excel 1DcutX. Il a justement été crée pour ca.
Bonjour eric, j'aurais une question et j'aimerais savoir si tu peux m'aider. Mon entreprise ma demander de faire un projet dans le domaine de l'entreposage et j'ai lue cette article et j'ai regarder tes fichiers, voilà pourquoi je m'adresse à toi directement.

Mon problème est similaire au leurs. J'ai une petite base de données qui m'indique combien de pièce de chaque modèle peux être stocker dans une boîte et chaque modèle a un type, qui définit ca dimension.

EX. modèle A type 2. La boîte A peux en contenir 15, la boîte B 3 et la boîte D 7.

J'aimerais savoir est-il possible que lorsque j'inscris la quantité de X modèle et de X type, cela ma dit la combinaison la plus adéquat.

Et si une combinaison parfaite n'existe pas, me permettre de trouver la combinaisons qui prends le bon nombre de boîtes même si une des boîtes est à moitié vide.

Je te lie ci-joint le fichier, ce ne sont pas les terme réel pour question de confidentialité.

http://cjoint.com/?DEgp1En5hBo
Merci Eric, c'est brillant!
Bravo et bel esprit de partage
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
0
Merci
Bonjour,

Regarde si ce programme te convient :
http://cjoint.com/?BEushEb54QO
Les explications des paramètres sont mis en commentaire des cellules.

eric
En fait, le besoin d'une telle application est né du fait que je travaille dans le domaine financier.
J'ai comme base de données une balance financière (avec au moins 3 colonnes: N° compte, libellé et Montant). La société me communique des états financiers dans les quels chaque rubrique possède un montant (qui en fait une sommation d'un ensemble de comptes de la balance). Vu que le nombre de lignes de la balance est généralement très nombreux, je perds des journées pour chercher les montants de la balance qui coïncident avec les rubriques des états financiers. Les montants de la balance peuvent être positifs et négatifs.

Qu'en pensez-vous?
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Et donc il te faudrait 1 colonne supplémentaire, c'est ça ?

Et je viens de voir que tu parlais de la cellule cible en négatif.
C'est normal que ça ne fonctionne pas.
Pour éliminer des milliers (voire des centaines de milliers) de tests je sors d'une boucle dès que la somme est dépassée.
Supprimer cette optimisation donnerait des temps de réponse insupportables.
Il te faut inverser tes nombres dans ce cas :
- saisir -1 dans une cellule et la copier.
- sélectionner la plage et 'collage spécial multiplication'

eric
Oui en fait j'ai besoin d'une autre colonne.
Juste une petite question. Est ce que c'est possible lors de la programmation de trouver une solution permettant l'utilisateur d'ajouter des colonnes ou des lignes librement?
Pour les montants négatifs ton idée est si maline. Merci bien Eric
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Tout est possible, tout dépend ensuite du temps disponible et de si ça vaut le coup.
Déjà 2 colonnes pour caractériser une somme ça parait pas mal.
Dans quels cas il en faudrait plus ? Il faut se restreindre aux champs caractéristiques, souvent 1 seul.
Et c'est plus simple de prévoir 5 colonnes que de faire un truc variable qui de plus limite le nombre de solutions affichables (actuellement 240 pour être compatible sur excel 2003).
Donc dis le nbre de colonnes qui te parait nécessaire.

Et pour les lignes tu mets autant de valeurs que tu veux.
655535 si tu n'es pas pressé pour la réponse...

eric
En fait 5 colonnes est très suffisant.

Merci
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
0
Merci
Bonjour,

Voici avec 5 colonnes.
Ajouté :
- traitement d'une somme cible négative (sans manipulation manuelle).
- un double clic sur une solution filtre sur les valeurs concernées.
- un double clic sur un filtre actif l'annule.

http://cjoint.com/?BEvjNdp8qA8

Normalement débuggué mais si tu peux tester à fond et signaler les pb pas trop tard...

eric
Formidable Eric. Je vous remercie énormément. Jusqu'à maintenant je n'ai rencontré aucun pb.
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Ok, je met en résolu pour toi.
Bonne continuation :-)
eric
0
Merci
Bonjour,

je reviens vers ce sujet qui m'interesse beaucoup,

J'ai repris votre macro du début, pour essayer de la modifier pour l'aplliquer à mon problème.
Mon Pb : J'ai une liste de série de chiffre allant de 1 à 33, et je souhaite trouver les meilleurs combinaisons possible pour etre soit egal à 33 ou le plus proche de 33.
Sachant que chaque chiffre doit être utilisé une seul fois.


J'espere avoir étais clair dans mon explication, et comment pouvons nous modifier que les chiffres ne soit plus en euros, mais des entiers.

merci d'avance
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour,

comment pouvons nous modifier que les chiffres ne soit plus en euros, mais des entiers.
Tu as juste à modifier le format de cellule (clic-droit sur les cellules)
Par contre dans le code laisse les variables typées à Currency, sinon tu risques de passer à coté de la solution exacte.
Ce programme ne recherche pas de solution la plus proche, ce n'est pas son but...

eric
Bonjour,

Merci pour votre travail, c'est exactement ce que je cherche!!!

Pourriez-vous poste le fichier sous format excel??

Merci d'avance!!

Roxane
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
0
Merci
Bonjour,

voici : http://cjoint.com/?CBmqwkGmHcg
eric
0
Merci
Merci beaucoup!

Petite question: Serrait-il possible de permettre la combinaison de plusieurs nombres négatifs et plusieurs nombres positifd pour atteindre un résultat donné??

Quand on combine un négatif et un positif (par ex: pour trouver -5, le système combine "-6" et "1"), ça marche.
Mais si on essaie plusieurs négatifs avec plusieurs positifs (par ex: pour trouver -17, le système combinerait "-15", "3", "-7" et "2"=??), ça ne marche pas.

HELP!!!
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour,

tu n'as pas lu le post 5 je crois.
Pour éliminer des milliers (voire des centaines de milliers) de tests je sors d'une boucle dès que la somme est dépassée.
Supprimer cette optimisation donnerait des temps de réponse insupportables.

Dans ton cas je te suggère d'ajouter 20 à tous tes nombres y compris le total à atteindre, et de faire l'opération inverse à la fin.

eric
0
Merci
Oui mais imaginons qu'on ait une liste de nombre assez élevés et précis, avec plusieurs chiffres derrière la virgule, ça limiterait beaucoup le nombre de combinaisons possibles.. L'idée n'est toujours pas envisageable? 8-)
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
0
Merci
Bonjour,

Oui mais imaginons qu'on ait une liste de nombre assez élevés et précis, avec plusieurs chiffres derrière la virgule, ça limiterait beaucoup le nombre de combinaisons possibles..
Non, ça diminue éventuellement le nombre de solutions.
Mais le nombre de combinaisons (elles doivent toutes explorées) lui est exponentiel. Si tu as vraiment beaucoup de valeurs attend toi à des temps de traitement longs, voire très très longs.

Quoiqu'il en soit ça m'a paru être une évolution intéressante, j'ai tenté...
Si tu pouvais me faire un retour si ça fonctionne bien.
Et par curiosité le nombre de valeurs ainsi que le temps mis.
http://cjoint.com/?CBom4p3UbC6

eric
0
Merci
Merci beaucoup pour ton travail!

Malheureusement je n'arrive pas à ouvrir le lien car il est bloqué par le filtre installé sur le PC sur lequel je travaille. Y a-t-il moyen de publier le fichier excel d'une autre manière?

Merci d'avance.

Roxane
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Donne-moi un site de dépôt de fichier auquel tu as accès ou inscris-toi sur le site et passe-moi en MP (clic sur mon pseudo) ton email.
eric
Messages postés
4
Date d'inscription
vendredi 14 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014
0
Merci
merci pour le travail eriic ton fichier m'a beaucoup aider j'ai fait un test en utilisant une base de données composer de 65 montant la valeur cible contient 7 montant mais après 3 test consécutive de 3 minutes pas de solution trouver
pourquoi y a il pas de solution pourtant ma base est petite?

j'aimerai avoir une réponse,merci.
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour (en général on commence par ça...),

Contrôle que nbTermesMaxi en H4 soit à une valeur suffisante avant de lancer la macro.
Par sécurité met-la à 65.
Et ne pas cocher pas 'Supprimer les doublons'. Il faut le faire en connaissance de cause, ça enlève des solutions.
Maintenant es-tu sûr à 100% qu'il y a obligatoirement une solution ? Peut-être qu'il manque des factures.
Par curiosité colle ici tes montants et le total à atteindre.
Et si tu connais la combinaison qui atteint le total, fourni là aussi.

eric
Messages postés
4
Date d'inscription
vendredi 14 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014
0
Merci
Bonjour eric concernant ta question c'est oui j'ai respecter les règles et je connais la combinaison se n'est que l'addition de sept montant,une formule très simple (une façon de faire un test).
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Tu peux mettre ici les valeurs, le montant et la somme correcte stp ?
avilor
Messages postés
4
Date d'inscription
vendredi 14 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014
-
6 374,31 €
108 541,88 €
75 566,79 €
74 623,24 €
78 587,43 €
2 116,57 €
611 494,40 €
878 328,32 €
1 481 372,72 €
42 256 629,73 €
1 983 360,61 €
1 499 746,41 €
15 976 478,77 €
714 807,00 €
2 194 054,82 €
855 646,34 €
9 571 079,23 €
4 573 078,31 €
1 782 192,29 €
41 286 529,09 €
13 819 675,57 €
68 882,76 €
1 940 295,28 €
1 371 098,28 €
37 156 338,86 €
11 169 637,16 €
1 183 563,46 €
1 746 518,08 €
1 818 206,29 €
1 155 930,90 €
38 677 773,29 €
10 125 099,48 €
38 695 024,69 €
8 777 939,93 €
39 430 615,24 €
7 332 474,17 €
1 093 920,77 €
2 968,32 €
1 795,62 €
1 808 349,55 €
1 842 064,26 €
2 272,28 €
1 027 644,74 €
4 073,10 €
4 327 158,82 €
38 782 450,19 €
881 430,44 €
1 823 045,71 €
37 685 918,39 €
66 104,67 €
2 849 674,72 €
7 375,65 €
803 688,60 €
1 771 655,25 €
1 099,57 €
2 274,23 €
3 574,84 €
704 994,73 €
1 558,49 €
1 723 241,90 €
1 392 345,83 €
285 145,97 €
37 436 926,60 €
21 561,73 €
15 254,21 €

tu peut prendre 7 montant ou plus n'importe lequel dans cette base et tu auditionne ça ne marche pas pour exemple tu peut prendre les 4 premiers et les 3 derniers de la base de donnée ça va faire (37 738 848.76 euro) j'utilise ta 4 eme version.
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Effectivement il y a des cas de plantages, ça va être chaud à rechercher, il va falloir que je trouve du temps libre...
Je posterai ici quand résolu.
Merci de l'avoir signalé.
eric
Ok ça marche mais ne soit pas long......rire.
Messages postés
3
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
14 avril 2015
0
Merci
Bonsoir,
Je lis ce post plusieurs mois plus tard. J'ai récupéré le fichier et j'ai regardé le code (Bravo ERIC, vraiment)
Je voudrais savoir s'il est possible de faire cette analyse sur un tableau à plusieurs colonnes?
Explications (ou du moins tentative :-) :
La plage A4:A100 contient 96 valeurs et une valeur en A2 égale à la somme de certaines des valeurs de la colonne A
La plage B4:B100 contient 96 valeurs et une valeur en B2 égale à la somme de certaines des valeurs de la colonne B
La plage C4:C100 contient 96 valeurs et une valeur en C2 égale à la somme de certaines des valeurs de la colonne C

Peut-on rechercher les lignes capable de satisfaire à la fois les valeurs de A2, B2, C2?

1°) Les valeur sont des entiers positifs ou négatifs
2°) Le nombre de ligne max pour arriver à la somme est souvent =<3

Si qualqu'un me lit et sait répondre à ça, merci vraiment d'avance

Cordialement
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour,

Ben tu le fais en 3 fois avec ce fichier non ?
Le modifier dans ce sens prendrait des jours (voire des semaines vu le peu de dispo que j'ai)
eric