SOMMEPROD avec conditions

Résolu
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

  1. 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
    1. 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
    2. @Pascal29992=SOMMEPROD(sierreur((B4:B7="Text1")*(C4:C7>0)*(D4:D7>0)*(C4:C7)*(D4:D7);0))

      Crdlmt
      0
    3. @DjiDji59430Ah c'est super, avec les SIERREUR ça fonctionne !
      Merci beaucoup ! :D
      0
  2. Contributeur
    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
    1. Ah c'est super, cette fois-ci ça fonctionne !
      Merci beaucoup ! :D
      0
  3. Contributeur
    Bonjour
    essayez:
    =SOMMEPROD((B4:B7="Text1")*(C4:C7*D4:D7))
    crdlmnt
    0
    1. 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
    2. @Pascal29992Bonjour à 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
  4. 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
    1. 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
    2. @Pascal29992Bonjour
      a tester comme indiqué par DjiDji59430 plus haut
      =SOMMEPROD((B4:B7="TEXT1")*(C4:C7<>"") *(C4:C7)*(D4:D7))    
      0
    3. @yclikça marche aussi :) merci beaucoup
      0
  5. Contributeur
    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
    1. 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