Excel 2003 - fonction SOMMEPROD

Fermé
demandes - 5 juin 2009 à 17:10
 demandes - 9 juin 2009 à 13:48
Bonjour,

Voilà, j'ai voulu utiliser la fonction SOMMEPROD qui me semblait avantageuse, mais j'ai un souci.

Quelqu'un pourrait-il me dire pourquoi Excel 2003 ne veut-il pas accepter ma formule?

=SOMMEPROD(D2:RECHERCHEV(A2;UNITÉS;4;FAUX);D3:RECHERCHEV(A3;UNITÉS;4;FAUX))

Cela serait plus simple que devoir passer par:
E2=D2*RECHERCHEV(A2;UNITÉS;4;FAUX)
E3=D3*RECHERCHEV(A3;UNITÉS;4;FAUX)
E4=SOMME(E2:E3)

Ce ne sont que des exemples, dans mon tableau, la formule contiendra plus de matrices.

Sommes-nous limités à maximum 30 matrices? J'en ai 33 pour ce calcul.

MERCI
A voir également:

15 réponses

Bonjour michel_b,

Il m'a fallu du temps pour trouver la solution, car mes deux premières formules ne fonctionnaient pas correctement voir
J4=SOMMEPROD(D2:D34;RECHERCHEV(A2:A34;UNITÉS;4;FAUX))
J6=SOMMEPROD((UNITÉS_NOMS_COMPLETS=A2:A34)*(D2:D34)*(UNITÉS_MÉTAL))

Mais enfin de compte, ma dernière formule a fonctionné voir
J8=SOMMEPROD((UNITÉS_NOMS_SANS_MISSILES=A2:A34)*(D2:D34)*(UNITÉS_MÉTAL_SANS_MISSILES))

Tu avais raison s'il y a 33 lignes dans un tableau, il faut qu'il en ait 33 dans l'autre pour que la fonction SOMMEPROD fonctionne.

Voici le lien au cas où cela intéressait quelqu'un d'autre: https://www.cjoint.com/?giqwhzDShI

Je tenais encore une fois à te remercier.

PS: si un modérateur passe par là, pourrait-il mettre le sujet comme résolu? MERCI.
1
m@rina Messages postés 21286 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 22 janvier 2025 11 381
5 juin 2009 à 17:33
Bonjour,

Et si tu nous disais plus précisément ce que tu veux compter, avec un petit exemple à l'appui ?... (http://cjoint.com).

m@rina
0
pépé35530 Messages postés 2942 Date d'inscription vendredi 1 mai 2009 Statut Membre Dernière intervention 19 mars 2016 1 386
5 juin 2009 à 22:34
Bonjour,

D'après ce que je viens de lire, excel ne gère au maximum que 30 matrices.
Voir si c'est encore vrai sous excel 2007.

A+

pépé
0
Bonjour m@rina et pépé35530,

Le classeur sur lequel je travaille est très compliqué et volumineux. De plus, il concerne un jeu de gestion (donc il n’y pas toujours très intéressant pour les autres personnes).

Cependant, je peux supprimer les nombreuses feuilles qui ne sont pas nécessaires pour les calculs que j’aimerais effectuer, mais je ne voudrai pas vous ennuyer non plus.

J’ai laissé les noms (plages données) que j’utilise dans le classeur complet.

La feuille IU (Informations sur les Unités) ne sert qu’à aller chercher les informations pour les calculs.

La feuille CPU1 (Calculs Particuliers sur les Unités n°1) est la feuille où je voudrai réaliser les calculs.

Actuellement en E35, j’ai la réponse que j’aimerais obtenir en J2 (soit le total en métal pour toutes les unités) avec ce genre de formule =SOMMEPROD(D2:RECHERCHEV(A2;UNITÉS;4;FAUX);D3:RECHERCHEV(A3;UNITÉS;4;FAUX))
Cela éviterait de devoir utiliser les cellules (E2:E34). Ainsi, le tableau serait moins volumineux.

Pour éviter qu’il y ait plus de 30 matrices, je crois avoir trouvé une solution, mais il faut faire intervenir une autre condition dans la formule. Actuellement en E36, j’ai la réponse que j’aimerais obtenir en J3 (soit le total en métal pour les UT (Unités Terrestre)) avec ce genre de formule =SI(B2:B34="UT";SOMMEPROD(D2:RECHERCHEV(A2;UNITÉS;4;FAUX);D3:RECHERCHEV(A3;UNITÉS;4;FAUX));FAUX)
Cela éviterait de devoir utiliser les cellules (E2:E34). Ainsi, le tableau serait moins volumineux.

Voici le classeur: https://www.cjoint.com/?ghk14RZAgm

Je vous remercie pour vos conseils.
0

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

Posez votre question
smartway14 Messages postés 822 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 8 octobre 2011 185
7 juin 2009 à 11:21
bonjour;
la fonction SOMMEPROD() s'utilise pour calculer une somme sous plusieur conditions :
voici la formule:
=SOMME(D2*RECHERCHEV( A2;UNITEE;4;faut);D3*RECHERCHEV(A3;UNITEE;4;faut))
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
7 juin 2009 à 11:38
Bonjour,

Est ce normal que tu ais 38 ligne dans le tableau U1 et 34 dans le tableau CPU1 ?
(somme prod ne fonctionne qu'avec des plages de m^me configuration)
sinon (ca marche quand m^me)
=SOMMEPROD(D2:D38;IU!D2:D38) pour le métal
je regarde pour UT

edit 11:45h
et pour les UT je propose la matricielle du dimanche
=SOMME(SI((B2:B38="UT");(D2:D38)*(IU!D2:D38)))
le curseur étant dans la barre de formules, valides par Ctrl+maj+entree et non par entree comme d'hab. XL encadre automatiquement la formules par des accolades
0
Bonjour smartway14,

Je te remercie pour la formule. Néanmoins, elle est longue à écrire.

Bonjour michel_m,

Oui, c'est normal, les 4 dernières unités sont des missiles et il faut d'autres ressources pour les construire. Donc, je ne les aie pas reprises dans la deuxième feuille.

Qu'entends-tu par des plages la même configuration?

Je te remercie pour les formules, elles fonctionnent parfaitement et sont beaucoup plus courtes.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
7 juin 2009 à 16:17
la m^me configuration:
c'est vrai que c'est pas très explicite, excuses moi

==< la m^me hauteur dans ce cas: ligne 2 à ligne 38
s'il y a une différence (ligne 2 à ligne 34 dans le 2) tableau2, sommeprod et les matricielles ne fonctionnent pas
donc, par prudence, laisse les lignes 35 à 38 vides dans le tableau2
0
Bonsoir michel_m,

Je te remercie pour tes explications. La formule finale est vraiment très simple quand tu as compris la fonction. Cependant, j'aimerais y intégrer une RECHERCHE VERTICALE au cas où il y aurait une différence entre les tableaux des feuilles CPU1 et IU (exemple: les données pour un même type d'unité ne seraient pas sur la même ligne…). Je vais réfléchir à cette question et je te tiens au courant…

MERCI
0
Bonsoir michel_m,

Je ne trouve pas la solution pour intégrer une RECHERCHE VERTICALE à la fonction. Pourtant, je ne pense pas qu'il y ait une erreur dans ma formule =SOMMEPROD(D2:D34;RECHERCHEV(A2:A34;UNITÉS;4;FAUX))

Peut-être est-ce tout simplement impossible à réaliser. Mais c'est dommage, car comme je l'ai dit, s'il y a une différence entre les tableaux des feuilles CPU1 et IU (des données pour un même type d'unité pas sur la même ligne...) ou s'il y a une modification du tableau IU (insertion d'une nouvelle colonne…); la formule sera faussée.

MERCI
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
7 juin 2009 à 22:39
pas trop compris tes doutes: s'il y a des différences sur un produit et une de ses caractéristiques dans des tableaux différents, c'est qu'il y a certainement double saisie, faute rédhibitoire en informatique...

les formules matricielles et par conséquent sommeprod sont indépendantes de l'ordre dans lequel elles travaillent;

Enfin, les fonctions RECHERCHE sont bien pratiques mais très limitées dans leur efficacité. la formule imbriquée INDEX-EQUIV est à privilégier

edit: les messages se sont croisés:
prend pas ça mal mais, c'est dans 99% des cas, une absurdité de glisser des rechercheH et .ou rechercheV dans une matricielle ou Sommeprod

mais ces 2 types de formules ne sont pas forcément évidentes à comprendre...
0
Bonjour michel_m,

Je voulais dire que si, par exemple, les informations de l'unité A sur le tableau 1 sont sur la ligne 10 et sur le tableau 2 sur la ligne 15, le résultat sera sûrement faussé puisqu'il prendra les informations d'une autre unité pour effectuer le calcul. En effet, actuellement, avec tes formules, le système ne vérifie pas que l'unité correspond bien dans les deux tableaux, avec une RECHERCHE VERTICALE, il vérifierait automatiquement si le nom de l'unité correspond bien dans les deux tableaux.

Je ne connais pas la fonction INDEX-EQUIV mais j'essayerai. Je ne prends pas mal tes commentaires, justement il m'aide à évoluer; des critiques sont toujours positives à condition d'être argumentées.

Cependant, je crois avoir trouver une solution plus simple que je dois essayer en créant tout simplement des plages nommées (noms d'unités, métal…) et en lui indiquant de vérifier le nom de l'unité et de prendre le métal correspondant, un peu comme dans cette formule: =SOMMEPROD((MINES_TYPES=A3)*(MINES_NIVEAUX>=B3)*(MINES_NIVEAUX<=C3)*(MINES_MÉTAL))

Je te remercie pour ton aide et tes conseils.

PS: je maîtrise les RECHERCHE VERTICALES, mais pas les SOMMEPROD, de plus, imbriquer plusieurs fonctions n'est pas toujours simple, à part les SI imbriqués qui ne me posent plus aucun problème (rire): =SI($K$25="Mines PA";SI(E30=1;RECHERCHEV(A30&E30;MINES;2;0);"MC");SI($K$25="Mines QG";SI(B30=1;RECHERCHEV(A30&B30;MINES;2;0);"MC");(SI($K$25="Mines - chères";SI(CNUM(B30)>CNUM(E30);SI(E30=1;RECHERCHEV(A30&E30;MINES;2;0);"MC");SI(B30=1;RECHERCHEV(A30&B30;MINES;2;0);"MC"));(SI($K$25="Mines + chères";SI(CNUM(B30)>CNUM(E30);SI(B30=1;RECHERCHEV(A30&B30;MINES;2;0);"MC");SI(E30=1;RECHERCHEV(A30&E30;MINES;2;0);"MC"))))))))
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
8 juin 2009 à 16:32
tu tagges "résolu" en haut de ton premier message....
0
Bonjour michel_m,

Je ne saurai pas car je ne suis pas inscrit. Cependant, j'ai encore un problème avec la prise en considération des unités "UT", ma formule ne fonctionne pas, mais je n'ai pas eu le temps d'approfondir.

=SI(B2:B38="UT");SOMMEPROD((UNITÉS_NOMS_SANS_MISSILES=A2:A34)*(D2:D34)*(UNITÉS_MÉTAL_SANS_MISSILES));FAUX)

Je te remercie.
0
Bonsoir,

Quelqu'un a-t-il une solution avec une condition SI et la formule =SOMMEPROD((MINES_TYPES=A3)*(MINES_NIVEAUX>=B3)*(MINES_NIVEAUX<=C3)*(MINES_MÉTAL))?

MERCI
0
Bonjour,

Je relance ma demande, car je n'ai toujours pas trouvé.

MERCI
0