Combinaisons d'objets

SebastienN_ Messages postés 3 Statut Membre -  
via55 Messages postés 14730 Statut Membre -
Bonjour à tous,

Merci de m'accueillir sur ce forum. J'ai besoin d'aide dans la création d'un tableau.

On a n objets (notés O1, O2... On) distincts répartis en p groupes (notés G1, G2... Gp) distincts. Un objet appartient à un et un seul groupe. Chaque groupe comporte donc entre 0 et n objets : si l'on note q1, q2... qp le nombre d'objets de chaque groupe, on a q1+q2+...=n.

Une feuille 1 comporte un tableau avec n colonnes (une colonne par objet) et 3 lignes :
- ligne 1 : nom de l'objet (O1 ou O2 ou ...)
- ligne 2 : groupe de l'objet (G1 ou G2 ou ...)
- ligne 3 : prix de l'objet

On cherche à créer dans la feuille 2 un tableau listant de façon automatique à partir de la feuille 1 toutes les combinaisons possibles d'objets, en excluant celles comportant au moins deux objets d'un même groupe : il ne peut y avoir dans une combinaison que 0 ou 1 objet d'un même groupe. On peut démontrer que le nombre de combinaisons possibles est égal à (q1+1)*(q2+1)*...

Le but du tableau est d'indiquer, pour chaque combinaison, la somme des prix des objets figurant dans la combinaison.

Je ne réussis pas à construire les formules du tableau de la feuille 2.

Voici une illustration du résultat souhaité :

Hypothèses :
1) 4 objets : O1, O2, O3, O4 (n=4)
2) 3 groupes (q=3) :
- G1 avec O1, O2 et O3 (q1=3 éléments)
- G2 avec O4 (q2=1 élément)
- G3 vide (q3=0 élément)
3) Prix des objets : O1=1€,O2=10€,O3=100€,O4=1000€

Nombre de combinaisons possibles : (3+1)*(1+1)*(0+1)=4*2*1=8

- Combinaison 1 : aucun objet ; somme des prix = 0€
- Combinaison 2 : O1 ; somme des prix = 1€
- Combinaison 3 : O1,O4 ; somme des prix = 1001€
- Combinaison 4 : O2 ; somme des prix = 10€
- Combinaison 5 : O2,O4 ; somme des prix = 1010€
- Combinaison 6 : O3 ; somme des prix = 100€
- Combinaison 7 : O3,O4 ; somme des prix = 1100€
- Combinaison 8 : O4 ; somme des prix = 1000€

Un grand merci à ceux qui pourraient m'aider!

4 réponses

Raymond PENTIER Messages postés 71826 Statut Contributeur 17 378
 
Oh, Sébastien ! Tu veux nous filer un mal de crâne ?
Personne ne cherchera à t'aider s'il faut se farcir ta longue explication sans disposer du moindre fichier !
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Il existe aussi :
1) https://mon-partage.fr/
2) https://www.transfernow.net/

0
SebastienN_ Messages postés 3 Statut Membre
 
Bonjour Raymond,

Voici le fichier Excel complémentaire à ma demande : https://www.cjoint.com/c/JDbawn18LVl
0
via55 Messages postés 14730 Statut Membre 2 749
 
Bonsoir Sebastien

Par formule ? difficile !
Par macro parfaitement possible, exemple :
https://mon-partage.fr/f/skT47GIz/
Tu peux enlever ou rajouter des colonnes en Feuil 1la macro s'adapte

Cdlmnt
Via


0
SebastienN_ Messages postés 3 Statut Membre
 
Bonjour et merci!

Le résultat est sans faute.

Je souhaiterais néanmoins réussir à réaliser un tableau sans macro, car je ne maîtrise pas du tout cet outil et car le problème ci-dessus fait partie d'un problème de combinaisons encore plus vaste que celui ici exposé : je vais devoir intégrer ces formules dans d'autres formules.
0
via55 Messages postés 14730 Statut Membre 2 749
 
Re,

Par formules c'est un casse-tête sans nom, je ne sais même pas si c'est possible
Il faut le faire par macro surtout si le nombre d'objets et de groupe est variable
et même par macro ce ne sera pas simple, celle que j'avais faite se basait sur ton exemple avec des combinaisons de 1 ou 2 objets mais au vu de ton fichier il faut aussi intégrer des combinaisons de 3, 4 objets, et voire plus !
Si quelqu'un a le courage de se lancer dans ce boulot de programmation tant mieux pour toi, j'essayerai de regarder à temps perdu car le problème m'intéresse mais je ne te promets aucun résultat dans l'immédiat

Cdlmnt
Via
0
Raymond PENTIER Messages postés 71826 Statut Contributeur 17 378
 
Désolé, SebastienN,

mais ton problème dépasse très largement mes compétences.
0