[Excel] Somme conditionnelle, plusieurs cond.

Fermé
Blourte - 1 juil. 2010 à 06:56
 Blourte - 1 juil. 2010 à 08:35
Bonjour,

J'aimerais faire une somme conditionnelle avec plusieurs conditions, mais je n'y parviens pas. J'ai l'impression que ça n'est pas possible sans passer par des étapes intermédiaires, est-ce vrai ?

Voici ma formule :

=SUM( IF(BC55:BC2010=$D$16,1,0) * IF(BA55:BA2010=1,1,0) * AT55:AT2010 )

En gros je veux sommer la colonne AT, dans le cas ou BC vaut $D$16 et BA vaut 1.

Merci d'avance pour votre aide !

# Excel 2003 Eng.
A voir également:

2 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
1 juil. 2010 à 07:09
Bonjour,

Tu n'étais pas loin.
Ta formule devrait marcher mais tu travailles sur des matrices, il faut valider en matriciel :
cad avec ctrl+shift+entrée (avec le curseur dans la zone d'édition).
Elle doit s'entourer de { }

Sinon tu as sommeprod() plus pratique car matricielle en validant normalement :
=sommeprod((BC55:BC2010=$D$16) * (BA55:BA2010=1) * (AT55:AT2010))

eric
1
Hello eric,

Merci pour ta réponse. Néanmoins, les 2 possibilités m'affichent #Value!

=SUMPRODUCT((BC55:BC2010=$D$16)*(BA55:BA2010=1)*(AT55:AT2010))
=SUM(IF(BC55:BC2010=$D$16,1,0)*IF(BA55:BA2010=1,1,0)*AT55:AT2010)

que je les valide normalement ou avec CTRL+SHIFT+ENTER.

Pourtant dans une autre case de mon fichier, cette formule fonctionne parfaitement :

=SUM(IF(BA55:BA2010=$D$16,AT55:AT2010)) (validée avec CTRL SHIFT ENTER)

Bref, je dois avoir la mauvaise syntaxe... ?
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 1/07/2010 à 07:26
sommeprod marche bien, mais parfois il faut ajouter *1 selon tes données.
=sommeprod((...)*(...)*1)
Assure-toi de ne pas avoir de valeur 'texte' mélangée dans les 'numériques'

sinon il faudrait déposer un extrait de ton tableau sur cijoint.fr et coller ici le lien fourni
0
Bon j'ai rajouté un 1, aucun changement.
En ce qui concerne le format des données :
- La colonne BA contient des formules IF, avec pour résultat : "" ou alors une clé type 1234
- La colonne BC contient des VLOOKUP, avec pour résultat : 1 ou 0 ou #N/A
- La colonne AT (celle qu'on somme) contient des IF, avec : "" ou une valeur.

Niveau format... j'ai tout repassé en général. Ca ne fonctionne pas.
J'ai essayé de copier/coller en valeur les 3 colonnes, la formule ne fonctionne toujours pas.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 1/07/2010 à 08:20
Tu ne peux pas avoir de valeur texte dans une matrice pour que ça marche...
Soit tu remplaces "" par 0, soit tu le traites par un si dans le sommeprod()
La fin devient donc :
=sommeprod(...*(si(AT55:AT2010="",0,AT55:AT2010)))
mais le si() n'étant pas matriciel il faudra valider le sommeprod en matriciel.

Et ton #NA risque de remonter aussi... Si c'est le cas soit mettre un 0, soit le traiter dans le sommeprod() avec si(estna(...),0,test)
Ou bien avec esterreur() pour éliminer tous les codes d'erreur

edit : modification de parenthèses
0
Ok merci.
Si je résume : Sur toutes mes plages ( de manière générale, pour eviter d'avoir ce type de problèmes), au lieu d'avoir ma Formule, je m'arrange pour avoir des 0 au lieu de #NA ou "", à l'aide de la formule ISERROR.

Ca a marché !
Merci beaucoup pour ton aide.
0