Fonction Sommeprod ?

Bonjour à tous,

Je pense que la fonction somme prod peut résoudre mon problème mais elle donne un résultat "#VALEUR!"

- J'ai un onglet "pivot" qui contient différents supports / semaines (en lignes) et différentes dimensions (en colonnes) telles que budget investi, impressions, clics etc

- J'ai un autre onglet "recap" qui synthétise toutes ces données en les classant par supports et par semaines

---> J'aimerais une sorte de fonction qui dise en gros : trouve, dans l'onglet "pivot" la colonne dont l'entête est "impressions", et trouve les lignes dont l'entête est ="3"; et additionne toutes les valeurs correspondants à ces conditions.

Ou encore :

Trouve, dans l'onglet "pivot" la colonne dont l'entête est "clics", et trouve les lignes dont l'entête est "Facebook", et additionne le contenu des cellules à l'intersection de ces deux colonnes/lignes.

J'aurais pu utiliser une fonction somme.si, mais les colonnes de l'onglet "données sources" ne seront pas disposées de la même façon d'une semaine à l'autre (et je devrai justement répéter l'opération chaque semaine), or cette fonction ne fonctionne que si les en-têtes de colonne restent fixes.

La fonction somme.prod est-elle bien celle susceptible de m'aider ? Pourriez-vous me donner sur une cellule du tableau ci joint un exemple d'utilisation fonctionnelle de cette formule (ou n'importe quelle autre tant que ça marche) ?

Bien à vous,

Camille

Bonjour,

SOMME.SI peut fonctionner si tu arrives à rendre les plages sur lesquelles elle se base dynamique. C'est possible à priori en combinant DECALER, qui permet de décaler une plage de référence de n ligne(s) et/ou n colonne(s) (si ces 2 valeurs sont égales à 0, ta plage est celle de départ) et EQUIV, qui te donne la position d'un élément au sein d'une plage.

Intégré dans ton fichier, ça donne :

Bonjour Pedro,

J'aimerais vraiment une fonction qui contienne une condition textuelle. Si la fonction sommeprod fonctionnait ça donnerait, en prenant l'exemple de la cellule B4 de mon onglet "recap" :

=SOMMEPROD(Pivot!1:1=recap!B1;Pivot!A:A=recap!A4)

Soit :

Si une colonne contient l'entête "impressions" additionne l'intersection des lignes contenant "3" en valeur semaine.

Mais l’occurrence ça me donne :

#VALEUR!

Si cette méthode te semble impossible, je veux bien une illustration de ce que donnerait la tienne (avec somme si, decaler, et equiv), pour la cellule B4 par exemple.

EDIT : au temps pour moi, je n'avais pas vu que tu avais illustré ton propos par un exemple. Je check ça de suite et reviens vers toi

Bonjour,

@Camille91, je pense que la solution proposé par Pedro est la bonne, ça semble coïncider pile poil avec ce que tu demandes.

Et merci à toi Pedro, depuis le temps que je cherchais comment imbriquer tout ça maintenant je suis fixé

ça fonctionne nickel en effet !

Merci Pedro pour ton coup de main

ça fonctionne nickel en effet !

Merci Pedro pour ton coup de main

Au plaisir de t'avoir apporté une solution !

Bonjour,

Bonjour Pedro22,

As-tu pensé à utiliser les TCDs ?

Cdlt.

Surement faisable avec des TCD effectivement mais mon cahier des charges impliquait que ce soit fait via une formule et non via un TCD

Re,

Dans ce cas, c'est lourd, mais tu as la fonction LIREDONNEESTABCROISDYNAMIQUE().

Mais j'ai tout de même une question : As-tu besoin de rapatrier toutes les données en synthèse ?

Cdlt.

Si je demande c'est que j'en ai besoin oui

@Pedro22, si je souhaite ajouter une condition supplémentaire (admettons, les impressions de la semaine 3 ET du support "Native"), qu'ajouterais-tu à la formule ?

Si je demande c'est que j'en ai besoin oui

@Pedro22, si je souhaite ajouter une condition supplémentaire (admettons, les impressions de la semaine 3 ET du support "Native"), qu'ajouterais-tu à la formule ?

On est sur une formule SOMME.SI.ENS du coup, et pas une simple SOMME.SI. Si les colonnes correspondant à tes critères ont une position fixe, il faut juste mettre la plage, sinon c'est une fonction DECALER + EQUIV à chaque fois pour décaler la plage en fonction de sa position.

Pedro,

J'ai essayé d'appliquer ton procédé mais je peine un peu à en saisir la logique... Même si je constate qu'il fonctionne à merveille pour le premier exemple que tu as posté ici

Que donnerait la formule somme si ens en question dans le fichier ci joint, en cellule W5 ?

(Somme des impressions de la semaine 3 pour le support "Native")

J'ai essayé d'appliquer ton procédé mais je peine un peu à en saisir la logique...

Pour que ça marche il faudrait déjà lire la syntaxe de la formule, indiquée dans la barre de formule par exemple...

Je reprend l'explication :

  • DECALER : on a une plage de départ, par exemple A1:A10. Si on "décale" d'une ligne, ça renvoie A2:A11, si on décale d'une colonne, ce sera B1:B10. Il est aussi possible de modifier la longueur et la largeur de la plage (mais c'est inutile dans ton cas).
  • EQUIV : donne la position d'un élément dans une liste. Par exemple, tu cherches "Bonjour" dans la plage A1:A10, s'il est situé en A3, la fonction renverra 3
  • En combiant DECALER et EQUIV, on peut obtenir une plage dont l'en-tête correspond à une valeur recherchée.

Ta formule en W5 sera donc :

=SOMME.SI.ENS(DECALER(Pivot!$A$2:$A$10000;0;EQUIV(recap!W$2;Pivot!$A$1:$AA$1;0)-1);Pivot!$A$2:$A$10000;$V5;Pivot!$B$2:$B$10000;$V$1)

Ceci implique que seule la position de la colonne "Impression" est variable, et que le reste est toujours à la même place. Comme tu n'as pas apporté de précisions là dessus, je te laisse adapter si ce n'est pas le cas.

Merci Pedro, je comprends mieux en effet. Il va falloir que je pratique un peu pour bien assimiler cette formule qui en imbrique deux autres.

Rechercher des sujets similaires à "fonction sommeprod"