Dans l’exemple ci-dessous, nous souhaitons calculer en D15 la somme des montants du service « Comptabilité » en juin qui correspondent à plus de 50% d’engagement :
Comme cela a souvent été le cas, nous vous proposons plusieurs solutions :
En D15 :
=sommeprod(--(A2:A13="Comptabilité");--(mois(B2:B13)=6);--(C2:C13>50%);D2:D13)
En D16 :
=sommeprod(1*(A2:A13="Comptabilité");1*(mois(B2:B13)=6);1*(C2:C13>50%);D2:
D13)
En D17 :
=somme((A2:A13="Comptabilité")*(MOIS(B2:B13)=6)*(C2:C13>50%)*D2:D13)
Les deux premières solutions sont des variantes l’une de l’autre, l’objectif de "--" ou de "1*" étant de remplacer un vecteur de VRAI et de FAUX par un vecteur de 1 et de 0.
La troisième solution doit être saisie comme une formule matricielle, donc validée avec la combinaison [Ctrl]-[Maj]-[Entrée]…
C'est le prix à payer pour sa compacité supérieure !
Bonjour Monsieur Excel,
RépondreSupprimerJ'aimerais savoir pourquoi la formule : =SOMMEPROD((A2:A13="Comptabilité")*(MOIS(B2:B13)=6)*(C2:C13>50%)*(D2:D13))est mauvaise.
Merci d'avance
Cordialement
Antoine
Cette solution fonctionne effectivement, car vous utilisez ici les "*" entre les blocs.
RépondreSupprimerElle ne fonctionne plus si vous remplacez les "*" par des ";", ce qui correspond à la syntaxe naturelle de la fonction.
Bonjour Mr Excel,
RépondreSupprimerEn tâtonnant dans un cas de figure similaire, j'ai utilisé la formule #3, sans la valider avec un Ctrl+Maj+Entrée, elle donne toutefois le bon résultat.
Est-ce normal, où vais-je me retrouver avec un gag plus tard ?
Merci d'avance !
Quelle version d'Excel utilisez-vous ? Est-ce Windows ou Mac ?
RépondreSupprimerPour ma part, avec Excel 2003 et2007 sous Windows, j'obtiens un message d'erreur si je valide la troisième formule sans la mettre en "matriciel".
Bonjour,
RépondreSupprimerJe souhaiterais mettre en place cette formule dans un fichier qui peut avoir un nombre de ligne différent d'un mois à l'autre. Du coup, j'ai mis la formule suivante qui ne fonctionne pas (#NOMBRE!) : =SOMMEPROD(--('SDB Invoice'!AS:AS="NEW");--('SDB Invoice'!AK:AK="LCEP");'SDB Invoice'!X:X)
Est-ce normal ? Faut il vraiment que la plage de cellule soit bien défini ?
Merci d'avance pour votre réponse. Et merci pour ce très bon blog !
Cdt,
Valérie
Essayez sans prendre des colonnes entières, par exemple avec AS2:AS1000...
RépondreSupprimerEffectivement ça fonctionne !
RépondreSupprimerMerci,
Valérie
bonjour,
RépondreSupprimerJ'utilise la formule n° 3 et j'aimerais savoir si je peux mettre des noms au lieu de plages car sinon cela m'oblige à l'actualiser tous les mois, au fur et à mesure que ma base de données grossit. Si ce n'est pas possible, quelle solution dois-je utiliser pour gagner du temps ?
Merci pour votre réponse
A priori, cela marche...
RépondreSupprimerPourquoi n'avez-vous pas essayé vous-même avant d'écrire ce commentaire ?
En fait, la difficulté est que ma BDD est dans un fichier différent et que les noms ne fonctionnent pas dans ce cas, je crois.
RépondreSupprimer