SOMMEPROD avec conditions

Résolu/Fermé
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 - 6 avril 2021 à 18:17
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 - 7 avril 2021 à 16:19
Bonjour,


Je cherche à faire le produit des colonnes "valeurs" et "coeff", à la condition que la colonne "critère" soit égal à TEXT1

J'ai donc écrit la formule suivante, qui fonctionne :
=SOMMEPROD((B4:B7="TEXT1")*(C4:C7)*(D4:D7))




Dans le cas présent, j'obtiens la valeur : 333,607476




Mais dans mon véritable Excel, je travaille sur une plus grande plage que les lignes 4 à 7
Et parfois, les valeurs de certaines cases des colonnes C et D sont vides

Dans ce cas, la formule me retournait une erreur #VALEUR

Pour contourner ça, j'ai enrichi ma formule avec des conditions sur les colonnes C et D : ne prendre en compte que les valeurs positives
Ce qui donne :
=SOMMEPROD((B4:B7="TEXT1")*(C4:C7>0)*(D4:D7>0))




Cette fois-ci, plus d'erreur, mais j'obtiens la valeur : 2 !


Je ne comprends pas où est l'erreur qui explique ce changement de valeurs, puisque pour moi il s'agit de la même formule qu'auparavant





Quelle formule utiliser pour retrouver ma valeur : 333,607476


Merci beaucoup :)



Configuration: Windows / Chrome 89.0.4389.114

5 réponses

yclik Messages postés 3673 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 25 septembre 2024 1 503
6 avril 2021 à 20:02
Bonsoir
a priori une piste à confirmer par d'autres experts
=SOMMEPROD((B4:B7="TEXT1")*(C4:C7>0,1)*(D4:D7>0))

si on décompose
si B4=TEXT1 => vrai =1
si C4>0 => vrai =1
si D4>0 =>vrai =1
ce qui donne 1*1*1 donc 1 pour la ligne 4
si B5=TEXT1 => 1
si C5>0 => 1
si D5>0 => 1
ce qui donne 1*1*1 donc 1 pour la ligne 5

somme ligne 4 et 5 donne 2
1
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4
6 avril 2021 à 21:45
OK c'est l'explication qu'il me manquait, Dji Dji m'a indiqué à raison qu'il fallait rajouter ces éléments: *(C4:C7)*(D4:D7) à la suite
0
DjiDji59430 Messages postés 4114 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 23 septembre 2024 668 > Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024
6 avril 2021 à 23:05
=SOMMEPROD(sierreur((B4:B7="Text1")*(C4:C7>0)*(D4:D7>0)*(C4:C7)*(D4:D7);0))


Crdlmt
0
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4 > DjiDji59430 Messages postés 4114 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 23 septembre 2024
7 avril 2021 à 00:25
Ah c'est super, avec les SIERREUR ça fonctionne !
Merci beaucoup ! :D
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
6 avril 2021 à 23:50
Bonjour,

je soutiens vaucluse, si tes cellules étaient réellement vides tu n'aurais pas de #VALEUR!

Je suis arrivé à :
=SOMMEPROD((B4:B7="text1")*SIERREUR((C4:C7*D4:D7);0)) 

à valider en matriciel avec Shift+Ctrl+Entrée
Comme celle de djidji si excel <> 365
eric
1
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4
7 avril 2021 à 00:24
Ah c'est super, cette fois-ci ça fonctionne !
Merci beaucoup ! :D
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
6 avril 2021 à 18:33
Bonjour
essayez:
=SOMMEPROD((B4:B7="Text1")*(C4:C7*D4:D7))
crdlmnt
0
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4
Modifié le 6 avril 2021 à 18:55
Bonjour Vaucluse,
Merci pour ta proposition, cependant elle ne convient pas


Je suis obligé de mettre >0 pour que la formule ne me retourne pas une erreur sur les valeurs vides

Il faut imaginer que mon Excel ne va pas des lignes 4 à 7, mais disons 4 à 50, et il y a certaines cellules vides, comme par exemple C23, D47, etc etc

Et si j'adapte ta formule avec les critères, cela me donne : =SOMMEPROD((B4:B7="Text1")*(C4:C7>0*D4:D7>0))

Le calcul me retourne 2, au lieu de la valeur attendue : 333,607476


Je n'arrive pas à comprendre en quoi l'ajout des critères > 0 change le résultat de la formule
Après tout, je n'ai aucune valeur négative dans mes cellules.


En espérant avoir apporté les précisions :)
0
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 139 > Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024
6 avril 2021 à 19:45
Bonjour à tous et salutations Vaucluse,

L'instruction C4:C7>0 ne te retourne pas la liste des valeurs C4:C7 mais une liste de valeurs Vrai ou Faux (converties en 1 ou 0 pour les calculs). Mais ce qui est étonnant c'est qu'une valeur vide est prise égale à 0 pour les calculs, alors ce n'est peut-être pas une vraie valeur vide mais un espace ?

Précise ou donne un exemple de ton fichier.

Cordialement
0
DjiDji59430 Messages postés 4114 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 23 septembre 2024 668
6 avril 2021 à 19:48
Bonjour à tous,

T'as rien adapté du tout, ta formule te renvoie le nombre de "texte1" dans la plage b4:b7 .
Il manque le cacul du depart, a savoir *(C4:C7*D4:D7)

=SOMMEPROD((B4:B7="Text1")*(C4:C7>0)*(D4:D7>0)*(C4:C7)*(D4:D7))


Crdlmt
0
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4
6 avril 2021 à 21:42
Ah très bien, je comprends que je n'avais fait qu'écrire des conditions VRAI et FAUX et qu'il manquait donc le calcul

Mais du coup avec ta formule je retombe sur le problème VALEUR mmmh :/


Sachant que les cellules sont vides, peut-être ne devrais-je pas marquer ">0" mais "différent de vide" ?
Si oui, existe-il une syntaxe pour ce faire?
0
yclik Messages postés 3673 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 25 septembre 2024 1 503 > Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024
7 avril 2021 à 08:39
Bonjour
a tester comme indiqué par DjiDji59430 plus haut
=SOMMEPROD((B4:B7="TEXT1")*(C4:C7<>"") *(C4:C7)*(D4:D7))    
0
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4 > yclik Messages postés 3673 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 25 septembre 2024
7 avril 2021 à 16:19
ça marche aussi :) merci beaucoup
0

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

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
6 avril 2021 à 20:01
Bonjour (et salut DjiDji)
avez vous dans C ou D des formules qui renvoient "" si elles ne trouvent rien? Si oui, remplacer ""par 0
crdlmnt
0
Pascal29992 Messages postés 96 Date d'inscription lundi 6 novembre 2017 Statut Membre Dernière intervention 2 juillet 2024 4
6 avril 2021 à 21:43
Bonjour Vaucluse, en fait il n'y a aucune formule dans les cellules vides
Ce sont des cellules vides justement

Peut être qu'au lieu d'écrire la condition ">0", je devrais plutôt ignorer les cellules vides tout simplement ?
Existe-il une syntaxe pour écrire "différent de vide" dans la fonction SOMMEPROD?

Merci beaucoup
0