Microsoft 365 formule somme.si.ens

Ludo1977

XLDnaute Nouveau
Bonjour,
J'essaie de créer une formule qui fait la somme d'une colonne en fonction du type d'achat, via une liste déroulante dans la cellule et d'un créneau de date (début fin de mois).
La formule se trouve de J2 à J13.
Je ne comprends pas pourquoi cela ne fonctionne pas.
Merci de vos retour!
 

Pièces jointes

  • Essai.xlsx
    15.9 KB · Affichages: 7
Solution
Bonjour Ludo,
Deux pièges ... donc deux erreurs 😂
1- Dans la formule en J2 vous avez "Petitachat" dans le tableau c'est Petit achat
2- .. et dans le tableau vous avez : "Petit achat " et non "Petit achat". attention aux espaces à la fin.
En PJ j'ai rectifié et changer la formule pour qu'elle soit la même partout en utilisant le mois pour construire la date :
VB:
=SOMME.SI.ENS(C_MontantAchat;C_DateAchat;">" & CNUM("1 "&H2&" 2022");C_DateAchat;"<" & MOIS.DECALER(CNUM("1 "&H2&" 2022");1);C_NatureAchat;"Petit achat*")
Le * dérrière achat est pour ne pas tenir compte de l'espace au cas où il "reviendrait" sur une autre ligne.
Question : pourquoi ne pas mettre une liste déroulante en colonne D, ce serait plus simple ?
J'ai mis un exemple en D2.

djidji59430

XLDnaute Barbatruc
Bonjour à tous,

Parce que tu prends comme critère des choses qui n'existent pas
non seulement petitachat n'existe pas mais en plus petit achat, c'est encore faux puisque tu as claqué une espace derrière
En plus tu vas devoir adapter ta formule à chaque mois.
Il vaut mieux prendre
=SOMMEPROD((MOIS(Tableau4[Date Achat])=MOIS([@Mois]&1))*(Tableau4[Nature de l''achat]="petit achat")*(Tableau4[Montant Achat]))que tu pourras descendre dans ton tableau


Crdlmt
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ludo,
Deux pièges ... donc deux erreurs 😂
1- Dans la formule en J2 vous avez "Petitachat" dans le tableau c'est Petit achat
2- .. et dans le tableau vous avez : "Petit achat " et non "Petit achat". attention aux espaces à la fin.
En PJ j'ai rectifié et changer la formule pour qu'elle soit la même partout en utilisant le mois pour construire la date :
VB:
=SOMME.SI.ENS(C_MontantAchat;C_DateAchat;">" & CNUM("1 "&H2&" 2022");C_DateAchat;"<" & MOIS.DECALER(CNUM("1 "&H2&" 2022");1);C_NatureAchat;"Petit achat*")
Le * dérrière achat est pour ne pas tenir compte de l'espace au cas où il "reviendrait" sur une autre ligne.
Question : pourquoi ne pas mettre une liste déroulante en colonne D, ce serait plus simple ?
J'ai mis un exemple en D2.
 

Pièces jointes

  • Essai (2).xlsx
    15 KB · Affichages: 1

Ludo1977

XLDnaute Nouveau
Bonjour Ludo,
Deux pièges ... donc deux erreurs 😂
1- Dans la formule en J2 vous avez "Petitachat" dans le tableau c'est Petit achat
2- .. et dans le tableau vous avez : "Petit achat " et non "Petit achat". attention aux espaces à la fin.
En PJ j'ai rectifié et changer la formule pour qu'elle soit la même partout en utilisant le mois pour construire la date :
VB:
=SOMME.SI.ENS(C_MontantAchat;C_DateAchat;">" & CNUM("1 "&H2&" 2022");C_DateAchat;"<" & MOIS.DECALER(CNUM("1 "&H2&" 2022");1);C_NatureAchat;"Petit achat*")
Le * dérrière achat est pour ne pas tenir compte de l'espace au cas où il "reviendrait" sur une autre ligne.
Question : pourquoi ne pas mettre une liste déroulante en colonne D, ce serait plus simple ?
J'ai mis un exemple en D2.
Merci pour ton retour!
Je ne me suis pas rendu compte des espaces ensuite j'avais prévu de mettre une liste déroulante en D mais je me suis focalisé sur cette formule.
De plus, tu réponds à une question que je me posais sur comment réutiliser le document en modifiant les dates. Dans ta formule, il n'y a pas lieu de modifier les dates en fonction des années.
Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dans ta formule, il n'y a pas lieu de modifier les dates en fonction des années.
Si bien sur, mais où trouver l'année qui ne figure nulle part ?
Sauf si on considère qu'en A2 l'année sera obligatoirement bonne. Dans ce cas on peut faire :
VB:
=SOMME.SI.ENS(C_MontantAchat;C_DateAchat;">" & CNUM("1 "&H2&" " & ANNEE($A$2));C_DateAchat;"<" & MOIS.DECALER(CNUM("1 "&H2&" " & ANNEE($A$2));1);C_NatureAchat;"Petit achat*")
( sinon mettre l'année dans une cellule à part )
On peut aussi rendre paramètrable l'item de recherche en mettant en J1 la liste déroulante. Dans ce cas la formule devient :
Code:
=SOMME.SI.ENS(C_MontantAchat;C_DateAchat;">" & CNUM("1 "&H2&" " & ANNEE($A$2));C_DateAchat;"<" & MOIS.DECALER(CNUM("1 "&H2&" " & ANNEE($A$2));1);C_NatureAchat;$J$1)
 

Pièces jointes

  • Essai (3).xlsx
    15 KB · Affichages: 2

Discussions similaires

Réponses
3
Affichages
126
Réponses
9
Affichages
392
Réponses
13
Affichages
410

Statistiques des forums

Discussions
312 184
Messages
2 086 008
Membres
103 089
dernier inscrit
johnjohn1969