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
293

Statistiques des forums

Discussions
315 095
Messages
2 116 158
Membres
112 673
dernier inscrit
ìntellisoft