Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

SOMMEPROD avec condition

Ranipet

XLDnaute Junior
Bonjour à tous,

Je crois qu'un fichier exemple est inutile ici mais si vous en voulez un, il s'agit du même que celui-ci (je tape ma formule en F3 de l'onglet Récap).

Bref, je voudrais faire un SOMMEPROD des colonnes D et E si une condition est respectée sur B.
L'onglet contenant les données s'appelle 'Mouvements', celui où je fais la somme 'Récap'.

J'ai donc essayé cette formule :
=SOMMEPROD((Mouvements!B:B=Récap!$B$3)*(Mouvements!D:D)*(Mouvements!E:E))

...qui ne marche pas. Alors que celle-ci fonctionne :
=SOMMEPROD((Mouvements!B3:B100=Récap!$B$3)*(Mouvements!D3:D100)*(Mouvements!E3:E100))


A votre avis, y a-t-il une solution pour qu'il me prenne toute la colonne ou dois-je intégrer la dernière ligne avec un INDIRECT et un NBVAL ?
 

mth

XLDnaute Barbatruc
Re : SOMMEPROD avec condition

Bonjour,

La fonction SOMMEPROD() ne peut fonctionner sur une colonne entière, c'est pourquoi ta première formule ne fonctionne pas alors que la seconde oui.

Si tu veux automatiser une solution consisterait à nommer tes zones en utilisant les fonctions DECALER() et NBVAL()
(par exemple comme ici )

Bien à toi,

mth
 

Ranipet

XLDnaute Junior
Re : SOMMEPROD avec condition

Très bonne idée DECALER !

Est-ce que je peux l'utiliser directement dans ma formule (DECALER(Mouvements!B3;0;0;NBVAL(Mouvements!B:B)+1;1)) ou je dois vraiment nommer une plage ?
 

mth

XLDnaute Barbatruc
Re : SOMMEPROD avec condition

re

Tu risques de générer une formule monstrueuse, car il faudra utiliser DECALER() pour chaque condition de ton SOMMEPROD(), perso je nommerais les zones.

Bon après-midi,

mth
 

Martini

XLDnaute Junior
Re : SOMMEPROD avec condition

re

Disons que j'aime bien les formules monstrueuses (je me soigne)
Je n'ai pas réussi à insérer du DECALER dans ma formule, peux-tu m'aider ?


Ranipet (j'ai deux comptes, un au boulot et un perso).
 

mth

XLDnaute Barbatruc
Re : SOMMEPROD avec condition

re

Version 1: tu nommes tes zones:
Zone Ref:
Code:
=DECALER(Mouvements!$B$3;;;NBVAL(Mouvements!$B:$B)-1;)

Zone Val
Code:
=DECALER(Mouvements!$E$3;;;NBVAL(Mouvements!$B:$B)-1;)

Zone Qt
Code:
=DECALER(Mouvements!$D$3;;;NBVAL(Mouvements!$B:$B)-1;)

Et ta formule devient:

Code:
=SOMMEPROD((Ref=Récap!$B3)*Qt*Val)

Version 2, tu ne nommes pas les zones, et ta formule pourrait-être: eek

Code:
=SOMMEPROD((DECALER(Mouvements!$B$3;;;NBVAL(Mouvements!$B:$B)-1;)=Récap!$B$3)*(DECALER(Mouvements!$D$3;;;NBVAL(Mouvements!$B:$B)-1;))*(DECALER(Mouvements!$E$3;;;NBVAL(Mouvements!$B:$B)-1;)))

Bien à toi,

mth
 

Ranipet

XLDnaute Junior
Re : SOMMEPROD avec condition

re,

Merci ça marche à merveille !

J'ai à nouveau besoin d'aide cependant
Je voudrais calculer la valeur unitaire de sortie de stock dans le premier onglet.
Or j'ai l'impression de ne pas pouvoir imbriquer LIGNE dans DECALER et SOMMEPROD. Je voudrais que la formule en I6 fonctionne mais avec une référence relative (et donc fasse un SOMMEPROD pour les lignes au-dessus).

=> Une solution

Merci.
 

Pièces jointes

  • Exemple SOMMEPROD DECALER LIGNE.zip
    9.9 KB · Affichages: 148

Discussions similaires

Réponses
12
Affichages
289
Réponses
11
Affichages
612
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…