Somme à 3 colonnes

Bonjours,

Mon problème est expliqué dans le document excel si vous n'avez pas toutes les information demandé moi

Les valeurs utilisé dans le tableau sont celles dont je cherche cette somme

Je suis débutant sur excel

Merci

Bonjour totolina,

je te retourne ton fichier modifié :

Ctrl e ➯ travail effectué !

Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Merci de ta réponse rapide

J'ai ouvert le document mais je n'ai pas vu les changements à part qu'il n'y a plus les sommes des exemples.

J'ai essayé Alt F11 mais les codes je ne connais pas trop et Ctrl e me donne le même fichier que celui que j'ai envoyé.

J’espère ne pas te déranger parce que je ne connais pas trop excel

Tu a écrit :

J’espère ne pas te déranger parce que je ne connais pas trop excel

non, tu m'déranges pas ; t'es ici sur un forum d'entraide (pour Excel et VBA) : c'est normal qu'il y ait des demandes et des réponses.

pour info : les intervenants qui répondent le font sur leur temps de libre ; ils sont bénévoles, donc non rémunérés.


* regarde cette copie d'écran :

screen 1

* version 2, avec un bouton de commande en plus :

screen 2

(si t'as besoin d'une modif, n'hésite pas à m'demander )

dhany h-animaux10

@totolina

merci de relire mon post précédent, car je l'ai bien complété :

https://forum.excel-pratique.com/viewtopic.php?p=671813#p671813

dhany

Merci,

C'est pas toute à fait ce que je cherche mais ça peut m'être utile.

Je cherche plutôt a faire une somme maximum par colonnes qui est environ égale pour chaque colonnes (B19=C19=D19). Je cherche à reproduire l'exemple que j'ai fait (en bas à gauche) avec une somme qui est la plus proche en chaque colonnes le mieux serrait d'avoir la même somme ( je pensais faire ça avec une somme cible mais comme je m'y connais pas trop je me suis dit qu'il y a peut peut être simple). Avec un programme qui calcul en fonction des valeur du tableau la meilleur combinaison (j'aimerai pouvoir changé les valeur du tableau).

Si tu n'as pas bien compris n’hésite pas à demander

Bonjour totolina,

au début, j'pensais qu'pour chaque colonne (E, F, G), fallait juste faire la somme des cases jaunes ; j'ai bien compris tes nouvelles infos ; j'ai essayé, mais j'y suis pas arrivé ; j'suis pas doué pour ce genre d'exo avec recherche d'une valeur cible selon plusieurs combinaisons possibles ! (j'ai bien compris qu'c'est une somme cible, mais idem : c'est trop compliqué pour moi ! )

j'espère qu'un autre intervenant te trouvera une solution ; bonne chance !

dhany

L'on ma conseillé d'utiliser un solveur je vais voir comment je peux faire avec

Si vous avez des idées n'hésitez pas

J'ai aussi trouvé ça

je me disais que je pourrai le modifier pour obtenir ce que je cherche

Bonsoir à tous,

Tu as 3^13 soit 1 594 323 combinaisons de sommes possibles.

Ça n'est pas énorme, tu peux tester toutes les possibilités et identifier les sommes qui t'intéressent.

Pour cela, tu peux utiliser l'écart-type des sommes obtenues et tu choisis le minimum.

Tu peux le faire manuellement (ça fait un gros fichier) ou l'automatiser par macro.

En dehors de ces 2 solutions, tu peux envisager le solver.

Mais pour garder la linéarité de l'objectif (mode simplexe oblige) tu seras surement obligé de le paramétrer en 3 sous-modèles qui te donneront chacun une solution. Tu choisiras la meilleure parmi les 3.

Tu pourrais utiliser les autres mode du solver mais tu n'auras plus l'optimum (généralement).

L'approche exhaustive (manuelle ou macro) te donnera toutes les solutions (dans ton exemple, il y a 2 optima).

Le solver ne te donnera qu'une solution. C'est déjà ça!

Pour l'approche exhaustive, tu écris tous les nombres de 0 à 3^13 moins 1 en base 3 sur 13 positions.

Tu auras donc des séquences de 13 chiffres de 0 à 2 pour représenter un de ces nombres.

Chaque nombres en base 3 sera une somme :

quand un 0 apparaît en position i du nombre, le ième nombre de la colonne 1 sera à intégrer dans la somme de la colonne 1

quand un 1 apparaît en position i du nombre, le ième nombre de la colonne 2 sera à intégrer dans la somme de la colonne 2

quand un 2 apparaît en position i du nombre, le ième nombre de la colonne 3 sera à intégrer dans la somme de la colonne 3

Par exemple, le nombre 1 464 058 donne 2202101022101 en base 3 et correspond à une combinaison de sommes optimale : 164,5 164,325 et 164,5 avec un écart type minimal de 0,082495791.

Si tu échanges le chiffre en 2ème position et celui en avant dernière position, tu auras aussi une combinaison de sommes optimale.

L'écriture en base 3 te permet d'adresser chaque colonne avec un chiffre (0, 1 ou 2). Il ne peut donc y avoir qu'un chiffre par ligne utilisé.

L'écriture sur 13 positions garantit que toutes les lignes seront utilisées.

Je pense que ce que tu recherches correspond à la version macro de cette approche.

Approche solver :

Le principe est de minimiser les écarts de chaque sommes de colonnes. Ce sera donc une minimisation.

Tu utiliseras un tableau de 13 lignes par 3 colonnes de variables binaires.

Tu feras un sommeprod entre chaque colonne de variables binaires et la colonne correspondante de tes données chiffrées pour obtenir la somme de chaque colonne.

Tu ajouteras une colonne de 13 contraintes indiquant que la somme de chaque ligne du tableau de variables binaires vaut 1.

Quand tu seras arrivé là, on pourra rediscuter.

Petite question :

Pourquoi veux-tu résoudre ce problème?

Un exo à faire? un boulot à rendre?

Tu t'y connais un peu en algorithmique ou tout ce que j'ai écrit est du charabia?

Commencer par ta question sur la combinatoire de sommes pour apprendre excel, c'est chaud.

Cordialement

Bonsoir

Merci de ta réponse très détaillé.

C'est un problème personnel

Je m'y connais pas vraiment en algorithmique, je vais essayé de me renseigner sur le forum et des pages web pour voir si j'arrive à comprendre et voir comment je pourrais faire.

PS : par optima tu veux dire quoi?

Bonsoir,

Optima, c’est le pluriel de optimum (neutre de je ne sais plus quelle déclinaison latine) comme un minimum, des minima.

Cordialement

Que voulez vous dire quand vous dites que dans mon exemple il y a deux optima?

Bonjour,

2202101022101 et 2002101022121 sont 2 optima.

Le 2ème chiffre a été permuté avec l'avant dernier.

C'est normal vu que dans le tableau de données, les lignes 2 et 12 des colonnes 1 et 3 sont égales.

On peut donc permuter ces positions

Cordialement

J'ai commencé à regarder comment faire avec ce que tu m'as dis et j'y comprend pas grand chose

Peux tu m'aider à le faire ou le faire si ça ne te dérange pas ça serrai vraiment gentil de ta part

Merci

Bonjour,

Regarde le fichier joint pour l'approche solver (simplexe).

C'est assez détaillé je pense mais si tu n'as jamais fait de programmation linéaire, je ne sais pas ce que ça peut donner en terme de compréhension.

Cordialement

Merci je vais regarder, toi tu ferrai ce que j'ai demandé en combien de temps?

Bonsoir,

Maintenant que l'algorithme est clair, si j'avais à le faire, je le ferais (en macro) en 2 ou 3 h je pense.

Il y a une boucle de 0 à 3^13-1, un changement de base, des sommeprod sur l'écriture en base 3, un calcul d'écart-type, un test pour mémoriser la ou les combinaisons d'écart-type minimal.

Quelqu'un qui développe régulièrement des macros le ferait beaucoup plus vite.

Cordialement

Bonsoir,

Le plus long, ce sont les mises en forme conditionnelles, les commentaires dans le programme et les fioritures.

Le programme est très court et presque simple.

Il lui faut 42s pour s'exécuter sur mon pc (poussif le pauvre).

J'ai mis 3 affichages de solutions. Dans ton exemple, 2 suffisent mais dans d'autres cas, il faudra peut -être en rajouter.... sauf si tu ne t'intéresses qu'à la première solution trouvée.

Cordialement

Merci beaucoup ça m'a grandement aidé

Je vais essayé de comprendre le fonctionnement.

Rechercher des sujets similaires à "somme colonnes"