Somme conditionnelle

  • Initiateur de la discussion Initiateur de la discussion isa44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

isa44

XLDnaute Occasionnel
Bonsoir à tous ,

En Q6 je voudrais la somme de la colonne K ( à partir de la ligne 11) si en colonne E les valeures sont A ou B.

En fait c'est comme si on filtrait la colonne E pour voir les valeures A & B et puis faire la somme de la colonne K.

J'ai essayé par macro mais celà ne me convient pas
Code:
Sub Macro16()

With Sheets("BN").Unprotect
    Selection.AutoFilter Field:=5, Criteria1:="=A", Operator:=xlOr, _
        Criteria2:="=B"
    Range("Q6").Select
    ActiveSheet.Unprotect
    Range("Q6").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[5]C[-6]:R[2055]C[-6])"
   
End With
End Sub

Donc si vous pouvez m'aider merci
 
Re : Somme conditionnelle

Bonjour à tous
Bise à Jean Pierre

On peut faire encore plus simple (pour ceux qui ne sont pas à l'aise avec SOMMEPROD) sinon plus court

=SOMME.SI(E11:E20;"A";K11:K20)+SOMME.SI(E11:E20;"B";K11:K20)
 
Re : Somme conditionnelle

Bonjour le Forum,

Bonjour le Fil,

Ce sujet m'intéresse, alors j'ai pris vos deux solutions. En l'absence de tableau, j'en ai crée un , la formule avec SOMMEPROD retourne le résultat 0 alors que la formule SOMME.SI retourne un résultat différent.
Avez vous une explication ?. Ci-joint tableau.

Cordialement.
 

Pièces jointes

Re : Somme conditionnelle

Bonjour,

H11 : =SOMME(SI((E11:E20="A")+(E11:E20="B");K11:K20)) → matricielle (Ctrl+Maj+Entrée)
H12 : =SOMMEPROD(((E11:E20="A")+(E11:E20="B"))*K11:K20)

La fonction SOMMEPROD est également matricielle, mais peut être validée par une simple Entrée.

En matricielles :
OU → +
ET → *
SAUF → -

Les conditions (E11:E20="A") et (E11:E20="B") renvoient chacune VRAI ou FAUX, soit 1 ou 0.
En les multipliant on obtient toujours 0, en les additionnant on obtient 1 (VRAI) si une des deux conditions est remplie et 0 s'il n'y en a aucune.
Dans le cas présent c'est bien l'une ou l'autre condition et non l'une et l'autre condition.

abcd
 
Re : Somme conditionnelle

Bonjour à tous

voici ton sommeprod :
Code:
=SOMMEPROD((((E11:E20="A")+(E11:E20="B"))>0)*K11:K20)
et ta formule matricielle
Code:
=SOMME(((E11:E20="A")+(E11:E20="B"))*K11:K20)
le probleme que tu rencontres, c'est que tu travailles sur la meme colonne, avec 2 valeurs differentes de test, donc en francais, tu cherches la somme de la colonne K, si la colonne E = A ou =B

un * = ET or une cellule ne pouvant etre à la fois = à A et B, le resultat est 0
+ = OU ce qui correspond à ta demande

selon l'exemple donné, regardons les resultats selon les valeurs possibles

avec * (ET), (E11:E20="A") * (E11:E20="B")
cellule E = A : 1 * 0 = 0
cellule E = B : 0 * 1 = 0
cellule E = C : 0 * 0 = 0
le resultat des tests etant = à 0 à chaque ligne, le resultat final = 0

avec + (OU), (E11:E20="A") + (E11:E20="B")
Cellule E = A : 1 + 0 = 1
Cellule E = B : 0 + 1 = 1
Cellule E = C : 0 + 0 = 0
le resultat des tests etant = à 1 Quand tu as soit A, soit B, le resultat finale correspond bien à tes criteres

oups : bonjoue abcd, excuse pour la collision
 
Re : Somme conditionnelle

Bonjour

On peut aussi écrire sommeprod ainsi

=SOMMEPROD((E11:E20="A")+(E11:E20="B");K11:K20)

le fait de mettre la matrice à "sommer" après un point virgule donne plus de souplesse car on a alors le même comportement qu'une fonction somme
(pas d'erreur en cas de valeur non numérique par exemple)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
752
Réponses
2
Affichages
589
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
906
Réponses
7
Affichages
831
Retour