SOMMEPROD et opérateurs logiques

SkyCorp

XLDnaute Junior
Bonjour à tous,

Je cherche à optimiser une formule du type SOMMEPROD.
Mon dossier Excel est notamment constitué de 2 feuilles, l'une disposant des données et la 2ème effectuant les calculs.
Sur la feuille de calcul, un des tableaux est constitué de la manière suivante :
* La première ligne donne l'année de vente d'un objet ("année", colonne B de la feuille de données et ligne 1 de la feuille de calcul)
* La première colonne donne le noms des pays de vente d'un objet ("pays 1", colonne C de la feuille de données et colonne A de la feuille de calcul)
* La 2nde colonne donne le noms des pays de production d'un objet ("pays 2", colonne D de la feuille de données et colonne B de la feuille de calcul).
* Le reste du tableau est évalué par la formule cherchée
* La colonne A de la feuille de données donne le nom d'un objet ("objet"), il s'agit de la colonne de référence de mon tableau, mais n'est pas triée.

Mon objectif est de déterminer le nombre d'objets par année pour un pays de vente et un pays de production. Comme une recherche est également faite sur un objet particulier ("objet_A") à la place des pays de production, la colonne B de la feuille de calcul contient également le nom de cet objet

La formule actuelle est la suivante (pour la case C2), avec quelques couleurs pour une meilleure lisibilité :
SI(
ESTNUM(TROUVE("objet_A";$B2));
SOMMEPROD(
(feuilledonnée!$A$5:$A$200="objet_A")*(feuilledonnée!$B$5:$B$200=C$1)*(feuilledonnée!$C$5:$C$200=$A2));
SOMMEPROD(
(feuilledonnée!$A$5:$A$200<>"objet_A")*(feuilledonnée!$B$5:$B$200=C$1)*(feuilledonnée!$C$6:$C$243=$A2)*(feuilledonnée!$D$5:$D$200=SI($B2="pays 2";"pays_2";SI($B2="national";$A2;"xxx"))))
)


Cette formule fonctionne tel quel. Cependant il ne s'agit pas tout à fait de la formule définitive. Le but est de modifier "pays_2" en "pays_2.1" OU "pays_2.2" ("xxx" sera modifié en conséquence pour traiter les autres pays).

Une solution qui fonctionne est la suivante si on ne prend pas en compte les autres pays (donc sans la condition "SI") :
SOMMEPROD((feuilledonnée!$A$5:$A$200<>"objet_A")*(feuilledonnée!$B$5:$B$200=C$1)*(feuilledonnée!$C$5:$C$200=$A2)*((feuilledonnée!$D$5:$D$200="pays_2.1")+(feuilledonnée!$D$5:$D$200="pays_2.2")))
Mais prendre en compte les autres situations finira par rendre la formule très compliquée et difficilement lisible (ce qui est déjà un peu le cas).

Par ailleurs, j'ai déjà tenté d'utiliser :
*(SI($B2="pays 2";(feuilledonnée!$D$5:$D$200="pays_2.1")+(feuilledonnée!$D$5:$D$200="pays_2.2");SI($B2="national";(feuilledonnée!$D$5:$D$200=$A2);"xxx")))
mais le calcul me fournit "0" à tous les coups.
J'ai également tenté SI($B2="pays 2";OU("pays_2.1";"pays_2.2");... et là j'obtiens "#VALEUR!".

Plus aucune solution simple ne me vient à l'esprit et je serais ravi d'avoir un peu d'aide ici. N'ayant découvert la fonction SOMMEPROD que très récemment, celà provient peut-être de là.
Si quelqu'un voit le moyen de réduire la complexité de la formule, je suis également preneur.


PS: désolé pour la taille de ce message, j'ai tenté de mettre toutes les infos pour expliquer la situation.
 
Dernière édition:

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

Pour la ligne 9, on fait non pas une recherche par rapport au pays de production mais par rapport à un objet particulier, comme indiqué précédemment. Il s'agit du seul cas particulier, le reste s'effectuant par rapport au pays de production.
Par contre, cela n'a pas d'influence sur les lignes 4 et 5.

Celà t'aide-t-il ?
 

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

Exactement.

J'avais au départ pensé utiliser une technique similaire à "EU" OU "US / EU" pour regrouper les autres pays. Mais pour cela, il faudrait déjà résoudre le cas "EU" OU "US / EU".
 

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

"national" signifie que le pays Producteur et le pays de vente sont les mêmes. Par exemple, pour la ligne 10, "national" signifie "US", pour la ligne 15 "national signifie "Ru" (Ru = Russie)
 

James007

XLDnaute Barbatruc
Re : SOMMEPROD et opérateurs logiques

Ok ... une fois les définitions précisées ... les choses s'éclaircissent ... ;)

Ci-joint ton fichier test ... dans lequel je n'ai modifié que le premier pavé ...
pour que tu puisses décortiquer les formules avant de les copier ailleurs ...

Je te mets en garde contre quatre lignes de formules qui ne sont pas identiques entre elles ... avec donc un risque d'écrasement ...

A +
 

Pièces jointes

  • TestSkyCorpV2.zip
    13 KB · Affichages: 22

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

Ta formule ressemble pas mal à la formule que j'ai utilisée en ligne 4. Je cherche surtout à comprendre pourquoi la formule en ligne 5 de mon fichier ne fonctionne pas. Dans cette formule, je cherche à unifier toutes les conditions possibles, donc avec l'utilisation de conditions SI, afin de ne pas avoir à modifier la formule d'une ligne à l'autre.

Petite remarque, "Other" prend en compte l'ensemble des oblets différents d'objet_A et produits dans des pays différents de "EU" (ou "US / EU") et de "national", ce qui fait que la somme "objet_A" + "EU" + "national" + "other" pour chaque colonne indique le nombre total de produits vendus dans le pays concernés (colonne A).
 

James007

XLDnaute Barbatruc
Re : SOMMEPROD et opérateurs logiques

Concernant le pourquoi ...

Tu utilises dans ta formule sommeprod() des Si() qui n'ont pas lieu d'être, puisque les éléments de sommeprod() sont équivalents à des si() ...
Quant à ta seconde erreur, puisque somme prod() est une fonction matricielle, les opérateurs Et Ou sont justement remplacés par la multiplication et l'addition ...
 

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

J'ai tenté de suivre ta remarque en copiant/collant la formule de la cellule E5 (par exemple) en E3 (par exemple à nouveau) et voila que la formule n'indique plus 0 (comme en E5) mais #VALEUR! :confused:
Je n'y comprends plus rien.
Après plusieurs tests, la même formule (en utilisant des copier/coller de la formule et pas de la cellule) fonctionne partout sauf pour les lignes 1 à 4. Celà commence à beaucoup m'intriguer.

Je continue les recherches.
 

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

J'ai tenté de suivre ta remarque en copiant/collant la formule de la cellule E5 (par exemple) en E3 (par exemple à nouveau) et voila que la formule n'indique plus 0 (comme en E5) mais #VALEUR! :confused:
Je n'y comprends plus rien.
Après plusieurs tests, la même formule (en utilisant des copier/coller de la formule et pas de la cellule) fonctionne partout sauf pour les lignes 1 à 4. Celà commence à beaucoup m'intriguer.

Je continue les recherches.

Quand je dis que ça fonctionne partout, celà veut juste dire qu'elle n'affiche pas #VALEUR!, mais il ne s'agit pas encore de la formule recherchée.

Je reste un peu bloqué sur une formulation éventuelle pour supprimer les conditions SI. Auriez-vous une proposition cher James007 ?
 

James007

XLDnaute Barbatruc
Re : SOMMEPROD et opérateurs logiques

Bonjour,

Je n'avais pas compris que tu avais simplement une difficulté à imbriquer les conditions ...

Ci-joint ... le tout-en-un ...

A +
 

Pièces jointes

  • TestSkyCorpV3.zip
    13.7 KB · Affichages: 34

SkyCorp

XLDnaute Junior
Re : SOMMEPROD et opérateurs logiques

C'est exactement ce dont j'avais besoin, merci pour tout :). J'étais un peu trop focalisé sur la condition SI au sein des SOMMEPROD.

Par une étrange coincidence, j'ai également trouvé cette formule ce matin sans être passé sur le forum auparavant juste en regardant les fichiers que tu m'avais déjà envoyés. Ca m'a permis de remettre un peu d'ordre dans mes idées. Il ne me reste plus à présent qu'à apprendre à maîtriser les Tableaux Croisés Dynamiques!

Par contre, il n'existe aucun moyen pour intégrer des SI dans les SOMMEPROD pour réduire la taille de la formule ?

Et j'ai toujours du mal à comprendre pourquoi les formules de la ligne 5 donnent des erreurs sur les lignes 1 à 4 (idem si on supprime les lignes 1 à 4). Une idée ?
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD