Problème calcul SOMMEPROD avec critères
Bonjour,
Je me permets svp de demander de l'aide à la communauté car je m'arrache les cheveux sur le problème suivant sans arriver à comprendre la cause.
Je veux calculer la somme de plusieurs valeur en fonction de plusieurs critères dans différents onglets.
Pour ça j'utilise un SOMMEPROD mais qui ne fonctionne pas et qui va me renvoyer 0 ou une des valeurs (pk celle ci je ne sais pas...) au lieu de la somme...
Dans le fichier joint, ma formule à problème est dans la cellule B2 de l'onglet "3 - Besoin M".
Je devrais avoir la somme des cellules de la colonnes B de l'onglet "2 - Besoin F" correspondant aux critères, soit B8 + B9 + B10... mais j'ai 0.
Lorsque je test la formule sur un autre jeu de data elle fonctionne:
- Test 1 : Onglet "Test" en cellule K3 (Avec toutes les datas sur le même onglet)
- TEst 2: Onglet "Capa test" en celulle B2 (Avec les datas dans plusieurs onglet pour reproduire le cas de figure).
Merci d'avance pour votre aide si vous voyez la cause de la problématique.
A votre dispo
Tim
Bonjour et bienvenue,
Si en B2 vous remplacez Sommeprod par ceci --> =SOMME.SI.ENS('2 - Besoin F'!B$2:B$100;'2 - Besoin F'!$A$2:$A$100;'3 - Besoin M'!$A2)
Ensuite recopiez à droite et vers le bas
Sommeprod, attention cela râme vite puisque de base c'est une formule matricielle. Quand on peut éviter, il vaut mieux
Si ok et terminé pensez à cloturer le fil
Crdlt
Bonjour Dan,
Merci beaucoup pour l'aide.
Cependant la formule ne fonctionne pas car je veux prendre en compte les 2 critères de mon exemple:
Je veux en B2 ("3 - Besoin M") la somme de l'onglet "2 - Besoin F" de la famille de produit "T grattante" qui est composé de "Matière G" (Voir onglet Bom).
Je ne comprends pas pk cela ne fonctionne pas alors que j'ai reproduit en exemple ce cas de figure dans mes onglets tests.... qui eux-fonctionnent :
Je veux en B2 ("Capa test") la somme de l'onglet "Besoin test" des fruits "pomme"&"cerise" qui est vient d'un "Fruitier" (Voir onglet "Nom test").
Merci pour votre aide!
Bonjour,
Je vous conseille d'utiliser l'outil onglet Formules > évaluation de formule pour comprendre ce qui se passe.
Dans la formule en 3 – Besoin M, B2
=SOMMEPROD('2 - Besoin F'!B$2:B$100*(BOM!$A$2:$A$100='2 - Besoin F'!$A$2:$A$100)*(BOM!$B$2:$B$100='3 - Besoin M'!$A2))Vous avez le 2e critère, qui est évalué par lignes correspondantes. Donc bien évidemment il renvoie une liste de 0 si vos données ne sont pas exactement dans le meme ordre sur le bom et la feuille besoin f.
Si vous voulez récupérer les lignes ayant T Grattante, il faut utiliser EQUIV.
De meme pour le 3e critère, il ne convient pas du tout, il faut chercher dans le BOM, pour chaque ligne, quelle est son composant, puis appliquer le critère.
Il me semble que la formule suivante donne le résultat voulu, voyez qu'elle est un peu plus longue puisqu'il faut, à chaque fois qu'on interroge le BOM, utiliser EQUIV.
Ci-joint la formule revue pour la cellule "3 – Besoin M" B2.
=SOMMEPROD(
'2 - Besoin F'!B$2:B$100
*NON(ESTERREUR(EQUIV('2 - Besoin F'!A$2:A$100;BOM!$A$2:$A$100;0)))
*NON(ESTERREUR(INDEX(BOM!$B$2:$B$100;EQUIV('2 - Besoin F'!$A$2:$A$100;BOM!$A$2:$A$100;0))=$A2))
)
NOTA : testez chaque section de la formule indépendamment avant de les ajouter, c'est absolument fondamental pour écrire ce genre de formules complexes. Par ailleurs, vous auriez intérêt à utiliser des tableaux structurés.
Re
Dans le fichier joint, ma formule à problème est dans la cellule B2 de l'onglet "3 - Besoin M".
La formule que je vous ai donnée répond à ce besoin là. En mettant T_Grattante en A2 de la feuille 3-BesoinM, cela vous renvoie 25289 ce qui correspond à la somme des Tgrattante repris en feuille 2-Besoin pour la colonne de janvier (cellules B8,B9 et B10).
C'est que vous demandiez --> Je devrais avoir la somme des cellules de la colonnes B de l'onglet "2 - Besoin F" correspondant aux critères, soit B8 + B9 + B10... mais j'ai 0.
Si vous voulez prendre en compte deux critères (ce que vous n'aviez pas expliqué au début), ma proposition ne fonctionne pas puisque le composant "Matière" n'est pas repris dans la feuille 2-Besoin.
En fait que devez-vous trouver comme valeur en B2 et B3 dans la feuille 3-Besoin ?
Crdlt
Bonjour saboh12617,
Merci beaucoup pour votre retour.
Effectivement, merci pour vos conseils.
Lorsque j'applique la formule proposée j'obtiens bien le total!
Cependant, lorsque je vérifie (en rajoutant des données dans l'onglet "BOM", j'ai MAJ le fichier joint), il n'y a pas de variation de résultats alors que je devrais ne plus avoir 25806 mais 10648 car uniquement "T Grattante2" contient "Matière G". J'ai l'impression que le 2eme critère n'est pas pris en compte mais regarde uniquement si la famille est dans l'onglet "BOM"?
Et plus globalement, le dernier objectif de ma formule est de multiplier les qté par la consommation liée à ce composant (Colonne E dans l'onglet BOM). Dans mon exemple je voudrais donc que les 10648 "Matière G" contenue dans "T Grattante2" soit multiplié par 20 (E4 dans 'longlet "BOM).
Merci beaucoup pour l'aide
Re Dan,
Désolé pour le manque de clarté, effectivement je veux prendre en compte 2 critères, dont le 2ème va dépendre du 1er.
Dans le nouvel exemple je voudrais obtenir les résultats suivants:
- B2 : 10648
- B3 :25806
Comme indiqué plus haut à saboh12617, mon objectif final est de multiplier ces résultats par la
consommation correspondante (colonne E, 'longlet "BOM) afin d'obtenir dans mon exemple
- B2 : 10648 * 20 = 212960
- B3 : T Grattante1 (3560*0,1+517*0,1) + T Grattante2 ( 10648*0,2) + T Grattante3 (11081*0,3) = 5862
Un grand merci pour l'aide
Bonjour,
Votre structure actuelle de fichier ne permet pas ce genre de calculs. J'ai ajouté un tableau dans votre feuille BOM (vous pouvez le déplacer, mais il faut garder le même nom surtout). Qui contient pour chaque composant les familles qui lui sont associées.
Ensuite on peut utiliser ce tableau comme un lien entre votre feuille 2 et le BOM. Autrement on perd de l'information.
La formule finale que j'ai trouvé est celle-ci :
=SOMMEPROD(
INDEX('2 - Besoin F'!$B$2:$M$13;0;EQUIV('3 - Besoin M'!B$1;'2 - Besoin F'!$B$1:$M$1;0));
1*NON(ESTERREUR(EQUIV('2 - Besoin F'!$A$2:$A$13;INDEX(tblRef;0;EQUIV($A2;tblRef[#Headers];0));0))))Je vous laisse étudier le fichier ci-joint. Pour vos quantités je pense que vous saurez multiplier ce résultat comme vous le voulez.