[Résolu] sommeprod source sur plusieurs colonnes

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
pphilippe
Membre hOOnoraire
Membre hOOnoraire
Messages : 137
Inscription : 18 oct. 2018 15:01

[Résolu] sommeprod source sur plusieurs colonnes

Message par pphilippe »

Bonjour
Ce coup ci je croyais avoir tout bon, les matrices de longueur égales , mais renvoie toujours un message d'erreur.
Je me demande (et j'ai cherché) si la syntaxe de calc est la même celle de excel en matière de ";" et de "*" je pense que oui.
Je dois avoir la solution sous les yeux mais je ne la vois pas ...
Merci d'avance
pphilippe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par pphilippe le 26 avr. 2025 06:38, modifié 1 fois.
Libre Office Version : 24.2.7.2
Ubuntu : 24.04.1
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6057
Inscription : 02 janv. 2009 23:56

Re: sommeprod source sur plusieurs colonnes

Message par Jean-Louis Cadeillan »

Bonsoir,
Chaque élément matriciel de SOMMEPROD() doit avoir des dimensions identiques (ligne/colonne).
Or en L2 de ta feuille 2021, la formule est :

Code : Tout sélectionner

=SOMMEPROD(($A$2:$G$11=$K3)*($I$2:$I$11=L$1);($H$2:$H$11))
$A$2:$G$11=$K3 est un tableau de 10 lignes et 7 colonnes, $I$2:$I$11=L$1 est un tableau de 10 lignes et 1 colonne, ainsi que $I$2:$I$11=L$1.
Je suis parti de l'idée de transformer $A$2:$G$11=$K3 en un tableau de 10 lignes et une seule colonne, chaque cellule de cette colonne sommant le nombre de fois où K3 apparaît dans la ligne en cours. C'est assez facile avec des colonnes intermédiaires, mais moins en une seule formule. J'ai donc utilisé une fonction matricielle, PRODUITMAT() qui va multiplier en produit matriciel la matrice $A$2:$G$11=$K3 avec une matrice colonne remplie de 1, avec autant de cellules (7) qu'il y a de colonnes dans la première matrice (ici en L3) :

Code : Tout sélectionner

PRODUITMAT($A$2:$G$11=$K3;LIGNE($A$1:$A$7)/LIGNE($A$1:$A$7))
Je reconnais que le bout de formule LIGNE($A$1:$A$7)/LIGNE($A$1:$A$7) est alambiqué, on aurait pu tout aussi bien le remplacer par {1;1;1;1;1;1;1}, mais il a l'avantage d'être généralisable à un nombre quelconque de cellules plus facilement.
La formule complète (en L3) est donc :

Code : Tout sélectionner

=SOMMEPROD((PRODUITMAT($A$2:$G$11=$K3;LIGNE($A$1:$A$7)/LIGNE($A$1:$A$7)))*($I$2:$I$11=L$1);$H$2:$H$11)
À tester ci-joint.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.7.2 (x64 et Java 1.8.0_451) et AOO 4.1.15 (et Java x32 1.8.0_431), Windows 7 Édition Intégrale 64 SP1
pphilippe
Membre hOOnoraire
Membre hOOnoraire
Messages : 137
Inscription : 18 oct. 2018 15:01

Re: sommeprod source sur plusieurs colonnes

Message par pphilippe »

... Alors là Jean-Louis respect !
Déjà que les matrices c'est compliqué (pour moi mais je ne dois pas être le seul) à comprendre, mais l'astuce de :
LIGNE($A$1:$A$7)/LIGNE($A$1:$A$7)
c'est du grand art.
Merci beaucoup
pphilippe
Libre Office Version : 24.2.7.2
Ubuntu : 24.04.1