Combiner une fonction RECHERCHE multi-critère et une fonction somme

abracadabra

XLDnaute Nouveau
Salut,

- j'ai une liste de frais classée en fonction de nom d'entreprise et de type de frais.
- Je souhaite que dans ma facture en rentrant le nom de l'entreprise pouvoir afficher les frais par type de frais.

Pouvez-vous m'aider ?

merci d'avance.

ci-joint le fichier.
 

Pièces jointes

  • Abracadabra.xlsx
    9.6 KB · Affichages: 393

mth

XLDnaute Barbatruc
Re : Combiner une fonction RECHERCHE multi-critère et une fonction somme

Bonjour,

Essaie avec cette formule en B6 et copiée vers le bas:
Code:
=SOMMEPROD((Frais!$A$2:$A$11=Facture!$B$2)*(Frais!$B$2:$B$11=Facture!A6)*(Frais!$C$2:$C$11))

Bonne soirée,

mth
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : Combiner une fonction RECHERCHE multi-critère et une fonction somme

Bonsoir abracadabra,

Tu trouveras dans l'aide Excel l'utilisation première de SOMMEPROD() pour multiplier plusieurs colonnes entre elles, mais l'aide ne va pas plus loin.

SOMMEPROD() est une fonction matricielle, assez magique même si très lourde en mémoire. Contrairement à SOMME.SI() ou NB.SI() qui n'autorisent qu'un seul critère, cette fonction permet d'effectuer des calculs en fonction de plusieurs critères.

Les plages utilisées doivent être de même taille (dans ton exemple les plages s'étendent toutes de la ligne 2 à la ligne 11), les conditions sont placées entre parenthèse, il ne faut pas utiliser de colonne entière (jusqu'à XL 2003 je crois), les conditions ET et OU se traduisent par * et +, voilà pour le plus gros à connaitre.

Dans ta formule en B6:

SOMMEPROD((Frais!$A$2:$A$11=Facture!$B$2)*(Frais!$B$2:$B$11=Facture!A6)*(Frais!$C$2:$C$11))

La première condition est: (Frais!$A$2:$A$11=Facture!$B$2)
cette première condition renvoie une matrice avec VRAI pour chaque ligne où la condition est vérifiée, FAUX pour les autres, comme ceci:
{FAUX;FAUX;FAUX;FAUX;VRAI;VRAI;VRAI;FAUX;FAUX;FAUX}
et effectivement dans le tableau du premier onglet, la condition est vérifiée à partir de la cinquième cellule (soit en A6) jusqu'à la 7ème (soit en A8), et pas pour les autres.

La seconde condition est: (Frais!$B$2:$B$11=Facture!A6), qui elle renvoie cette matrice:
{VRAI;FAUX;VRAI;FAUX;FAUX;VRAI;FAUX;VRAI;VRAI;FAUX}
soit VRAI à chaque fois qu'il y a un A dans la colonne B, FAUX pour les autres.

En multipliant des VRAI et des FAUX, on obtient 0 ou 1, VRAI par VRAI = 1, VRAI par FAUX ou FAUX par FAUX = 0
Avec nos deux matrices, la multiplication donne donc:
{0;0;0;0;0;1;0;0;0;0}
soit 1 si les deux conditions sont vérifiées (même entreprise et même type de frais), 0 si au moins une des conditions est fausse.

La somme des frais se trouve dans la dernière partie de la formule:
(Frais!$C$2:$C$11)
qui elle aussi est une matrice pouvant s'écrire comme ceci, et qui reprend l'ensemble des valeurs de la plage colonne C:
{15;200;7;6;3;66;721;22;335;9}

SOMMEPROD() va donc additionner le résultat de la multiplication de nos matrices,
{0;0;0;0;0;1;0;0;0;0} *
{15;200;7;6;3;66;721;22;335;9}
est donc égal à 66

Petite astuce bien pratique pour vérifier les résultats intermédiares d'une formule, tu sélectionnes dans la barre de formule la partie à contrôler et tu appuies sur la touche F9. Ensuite tu fais ESCAPE pour ne pas modifier ta formule si non F9 te remplacera la partie de ta fomule par le résultat).
Si la formule est longue bien évidemment tu peux aussi la décomposer en plusieurs morceaux.

Voilà abracadabra, j'espère que ces quelques commentaires pourront t'aider à y voir plus clair, sans oublier bien sûr les centaines de fils que tu trouveras sur le forum autour de SOMMEPROD()

Bien à toi,

mth
 

abracadabra

XLDnaute Nouveau
Re : Combiner une fonction RECHERCHE multi-critère et une fonction somme

Salut,
je me permet de revenir vers toi au sujet de la fonction SOMMEPROD().
j'ai appris à me servir de la fonction et je t'en remercie mais j'arrive désormais à une limite de compétence, j'ai donc besoin de ton aide.
J'ai créer une fonction SOMMEPROD() avec matrice = date. j'aimerais maintenant compléter ma formule avec 3 dates. ce qui correspondrait à une fonction SOMMEPROD+ET/OU....
ci-joint mon fichier tu pourra mieux comprendre.
merci de ton aide.
Abracadabra
 

Pièces jointes

  • Facture.xlsx
    15.8 KB · Affichages: 147
  • Facture.xlsx
    15.8 KB · Affichages: 166
  • Facture.xlsx
    15.8 KB · Affichages: 170

mth

XLDnaute Barbatruc
Re : Combiner une fonction RECHERCHE multi-critère et une fonction somme

Bonjour,

Le signe * correspond à ET, le + à OU, du coup essaie avec :

En H5:
Code:
=SOMMEPROD(('Note de frais'!$A$2:$A$6='Facture '!$E$1)*('Note de frais'!$B$2:$B$6='Facture '!A5)*(('Note de frais'!$C$2:$C$6='Facture '!$C$2)+('Note de frais'!$C$2:$C$6='Facture '!$C$3)+('Note de frais'!$C$2:$C$6='Facture '!$C$4)))

en I5:
Code:
=SOMMEPROD(('Note de frais'!$A$2:$A$6='Facture '!$E$1)*('Note de frais'!$B$2:$B$6='Facture '!A5)*('Note de frais'!$D$2:$D$6)*(('Note de frais'!$C$2:$C$6='Facture '!$C$2)+('Note de frais'!$C$2:$C$6='Facture '!$C$3)+('Note de frais'!$C$2:$C$6='Facture '!$C$4)))

Un tableau croisé dynamique serait peut-être plus adapté que des formules ...

Bien à toi,

mth
 

abracadabra

XLDnaute Nouveau
Re : Combiner une fonction RECHERCHE multi-critère et une fonction somme

Merci beaucoup ca marche très bien !

J'ai essayé d'appliquer la fonction SOMMEPROD() avec des cellules de texte.

mais ca ne marche pas ! comment faire ? (ci joint mon essaie)

merci d'avance.
 

Pièces jointes

  • Facture abracadabra v2.xlsx
    14.4 KB · Affichages: 140

Discussions similaires

Statistiques des forums

Discussions
312 506
Messages
2 089 111
Membres
104 037
dernier inscrit
damsau