Formule

Résolu/Fermé
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017 - 15 nov. 2017 à 15:48
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017 - 20 nov. 2017 à 21:22
Bonjour,

Je ne trouve pas de solution à mon problème peut être quelqu'un pourra m'aider !

Voila j'ai un tableau avec une ligne SAC et une ligne QUANTITÉ

SAC QUANTITE

SAC 1 2
SAC 2 1


Suivant le numéro du sac je voudrais que le nombre de jouet à mettre à l'intérieur s'affiche et s'additionne.
Par exemple je sais qu'a l'intérieur de tout les SAC 1 se trouve jouet 1 et jouet 3, et que pour les SAC 2 il y a jouet 1, 2 et 3

Est ce qu'il est possible qu'avec une formule j'arrive à ce résultat

JOUET 1 2
JOUET 2 1
JOUET 3 2

Ce qui me permettrais de savoir le nombre et les référence des jouets à sortir.

Merci.

10 réponses

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
19 nov. 2017 à 00:10
Bonjour,

Ta demande est réalisable avec une formule.
Il faut d’abord que tu crées un tableau «sacs x jouets» dans lequel tu mets le nombre de jouets pour chaque sac.
Si tu as 10 sacs et 15 jouets, ton tableau aura 10 lignes et 15 colonnes.
Quand un jouet n’est pas dans la composition d’un sac, mettre zéro. Il faut que toutes les cellules contiennent un nombre.

Tu remplis la colonne «quantité de sacs» pour chacun des 10 sacs (10, c’est pour l’exemple), dans le même ordre que ton tableau précédent, même si certains sacs sont à zéro (tu saisis zéro).

Avec cette structure de données, le résultat s’obtient par un simple PRODUITMAT() entre le vecteur ligne composé de 1 et comprenant autant de colonnes qu’il y a de sacs et la matrice résultant du produit du vecteur «quantité de sacs» par la matrice «sacs x jouets».
Ce dernier produit est un produit simple, pas un produimat().
Il permet d’obtenir le total de jouets nécessaires pour chaque quantité de sacs.
Le produitmat() à gauche par le vecteur ligne composé de 1 ne sert qu’à faire la somme de chaque colonne.
Si tu sais le faire autrement, prend ta méthode.

Le résultat que tu obtiendras sera un vecteur ligne de nb_jouets colonnes.
Si tu veux un résultat en colonne, il faut ajouter un TRANSPOSE().

Cordialement
1
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
20 nov. 2017 à 01:09
Bonsoir,

Sans fichier, ça n'est peut-être pas simple à se représenter.

https://www.cjoint.com/c/GKuajacAQ7d

Cordialement
1
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
15 nov. 2017 à 16:12
Bonjour, et bienvenue au nouveau membre.

Plutôt que d'essayer d'écrire le contenu de ton tableau (ce qui n'est pas très réussi), envoie-nous ton fichier Excel
 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
"j'ai un tableau avec une ligne SAC et une ligne QUANTITÉ"
doit être compris comme
"j'ai un tableau avec une colonne SAC et une colonne QUANTITÉ", non ?
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
15 nov. 2017 à 16:16
Bonjour,

Dans l'état c'est pas tellement possible, ou alors il nous manque des données.

Comment Excel sait quel jouet est dans quel sac?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
Modifié le 15 nov. 2017 à 16:46
D'autre part ton résultat est faux !
Pour le
SAC 1
il y a 2 JOUETS 1 et 2 JOUETS 3 ;
Pour le
SAC 2
il y a 1 JOUET 1, 1 JOUET 2 et 1 JOUET 3 ;
Pour les
2 SACS
il y a 3 JOUETS 1, 1 JOUET 2 et 3 JOUETS 3.
Il n'y a jamais, nulle part,
2 JOUETS 1, 1 JOUET 2 et 2 JOUETS 3

C'est bien, la retraite ! Surtout aux Antilles ... :-) 
Raymond (INSA, AFPA, CF/R)
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
15 nov. 2017 à 17:13
Oui exact ce sont des colonnes désolé.

Justement c'est mon problème je me demandais si il était possible avec une formule, que excel ce dise, si la quantité de SAC 1 est de 1 alors quantité jouet 1 =1 et quantité jouet 2 = 1.
Le problème ce complique ensuite avec SAC 3 car quantité jouet 1 = 2 (Si la quantité sac 3 = 1 alors jouet 1 = 2)

Je pense que c'est impossible, il faut que je trouve une autre solution.

Je vous enverrais mon tableau ce soir, sait on jamais....
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
15 nov. 2017 à 22:38
Je suppose que tu t'es précipité à 17:13 pour répondre au message que diablo t'a envoyé à 16:16 sans prendre connaissance de mon message de 16:42 complété à 16:46 ?
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
15 nov. 2017 à 22:52
Oui c'est exact il y avait une erreur, c'est vos resultats qui sont justes
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
Modifié le 16 nov. 2017 à 17:12
Bonjour,

En effet la formule fonctionne pour les sac 1 et 2 et je vous remercie, mais pour ce qui est du sac 3 ça ne marche plus....



https://www.cjoint.com/c/GKqqmfgLHbt
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
17 nov. 2017 à 13:48
Vodkito, voyons !
Tu nous fais le même coup que Stéphanie "guerando" https://forums.commentcamarche.net/forum/affich-34996207-repeter-une-lettre-dans-un-nombre-de-cellule-defini#p35007412

Tu exposes un problème ; on te donne la solution ; tu rétorques que si tu changes les éléments du problème la solution ne convient plus ! Evidemment ! Si tu demandes un moyen de déplacement urbain pour 2 personnes et qu'on te donne une mobylette, il est évident qu'elle ne servira à rien pour 10 personnes !

Es-tu certain qu'il n'y aura pas plus de 8 sacs ni plus de 8 jouets ?
Et pour les 4 derniers sacs c'est à nous de deviner leur contenu ?
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
18 nov. 2017 à 16:08
Enfin Raymon PENTIER je pense que vous vous êtes precipitez et n'avez pas lu mon messgae du 15 nov. 2017 à 17:13 ! Ou je parle bien du contenu du sac 3 !
Je cherchais juste a expliqué par étape pour ne pas avoir trop d'informations d'un coup....
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090 > Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
18 nov. 2017 à 18:33
Bien sûr, que j'ai lu ton message du 15 à 17:13, puisque c'est à lui que je réagis !
Si ta logique est d'exposer un problème étape par étape, tu aurais dû commencer avec un seul sac, et pas tout de suite deux ...
As-tu compris ma parabole du vélo ?
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
20 nov. 2017 à 12:51
Super ça marche merci beaucoup !
Je n'avais pas du tout penser à cette façon de faire !

Du coup une dernière question si j'ai plus de sorte de sac que de jouets par exemple 8 types de sac différents mais seulement 6 types de jouets différents, la matrice ne peux plus fonctionner ?

Encore merci :)
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
20 nov. 2017 à 13:52
Si, ça fonctionne en matrice rectangulaire.
Il faut juste adapter la formule aux nouvelles dimensions.

Si tu coinces, tu demandes

Cordialement
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
Modifié le 20 nov. 2017 à 15:18
Je dois oublier de modifier une plage mais je ne vois pas laquelle car quand je sélectionne jusqu'au jouet 6 je ne peux pas supprimer les colonne 7 et 8 ce qui n'est pas très grave puisque je peux changer la mise en forme par contre pour les cellules F9 et F10, je n'arrive pas à enlever la formule.

https://www.cjoint.com/c/GKunAyskcvt

De plus pourrais tu m'expliquer brièvement cette partie de ta formule ("1:".

Merci.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856 > Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
20 nov. 2017 à 18:23
Bonsoir,

L'explication pour le ("1:"... :

je cherche à créer une matrice ligne remplie de 1. Je pourrais utiliser {1.1.1.1.1.1.1.1} qui me donne le résultat pour une matrice 1 par 8.
Comme je ne savais pas combien de sacs tu allais avoir à traiter, j'ai rendu le dimensionnement en nombre de colonnes dépendant de ta zone "sacs" : $I$3:$I$10.

Dans la formule TRANSPOSE(--(LIGNE(INDIRECT("1:"&LIGNES($I$3:$I$10)))>0)), LIGNES($I$3:$I$10) fournit 8, soit le nombre de sacs (nbre de lignes de la zone I3:I10).
LIGNE(INDIRECT("1:"&LIGNES($I$3:$I$10))) donnera donc LIGNE(INDIRECT("1:8")) ou encore, la séquence verticale des chiffres 1 à 8.
LIGNE(INDIRECT("1:"&LIGNES($I$3:$I$10)))>0 va comparer chaque terme de la séquence de chiffres de 1 à 8 avec 0. J'obtiendrai donc une séquence verticale de 8 valeur booléennes VRAI.
Je transforme les VRAI en 1 grâce au -- (double moins). Certains utilisent le 1* plutôt que le --. Moi, j'aime bien le --.

J'ai donc une séquence verticale de 8 uns que la fonction TRANSPOSE() me transforme en séquence horizontale de 8 uns.

Si ton nombre de sacs est stable à 8, tu peux remplacer TRANSPOSE(--(LIGNE(INDIRECT("1:"&LIGNES($I$3:$I$10)))>0)) par {1.1.1.1.1.1.1.1}. C'est plus court.



Pourquoi la matrice ligne de 1 :

Parce que je ne sais pas faire autrement.....
Je veux obtenir les totaux marginaux de chaque colonne de la matrice B3:B10*J3:O10.

En calcul matriciel (je parle algèbre linéaire), dans un produit, la matrice de gauche agit sur les lignes de la matrice de droite et celle de droite agit sur les colonnes de celle de gauche.

On s'en rend compte en multipliant une matrice quelconque par une matrice de permutation à gauche puis à droite.
On s'en rend également compte quand on multiplie une matrice quelconque à gauche par un vecteur ligne de 1 ou à droite par un vecteur colonne de 1.
Le premier produit donne une matrice ligne des sommes de chaque colonne. Le second, une matrice colonne des sommes de chaque lignes.

Il faut que les dimensions de chaque composante du produit soient conformes : le nbre de colonnes du vecteur ligne = nbre de lignes de la matrice et nbre de lignes du vecteur colonne = nbre de colonnes de la matrice.

Comme le résultat d'une multiplication a le nbre de lignes de la matrice de gauche et le nbre de colonnes de celle de droite, dans tes formules tu obtiendras une matrice 1 ligne par nbre_de_jouets colonnes.
C'est plutôt cohérent.

Je ne pense pas m'être planté dans mes explications entre gauche/droite et lignes/colonnes.



Je te renvoies ton fichier modifié.
C'est vrai que les modif n'étaient si simple que ça.

Cordialement

https://www.cjoint.com/c/GKuroDZJlXQ
0
Vodkito Messages postés 8 Date d'inscription mercredi 15 novembre 2017 Statut Membre Dernière intervention 20 novembre 2017
20 nov. 2017 à 21:22
Merci beaucoup d'avoir pris le temps d'expliquer tout ça !

Bonne soirée et encore merci pour la solution
0