Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Maudit SOMMEPROD

eric72

XLDnaute Accro
Bonjour à tous et bonne année,
J'ai un problème avec une formule SOMMEPROD (toute bête) mais mon grand âge doit me grignoter des neurones chaque jour et je ne vois pas du tout ou est mon erreur.
Merci à tous pour le coup de main!!!
Eric
 

Pièces jointes

  • test.xlsm
    27.5 KB · Affichages: 7
Solution
Bonjour,

La formule suivante fonctionne :
=SOMME.SI.ENS(TbAbsence[[#Tout];[Nb Jrs Ouvres]];TbAbsence[[#Tout];[Nom]];A7;TbAbsence[[#Tout];[Type]];B7;TbAbsence[[#Tout];[Date Début Mois]];">="&C7;TbAbsence[[#Tout];[Date Fin Mois]];"<="&D7)

PS : horrible les formules avec un tableau structuré mais comme c'est votre choix ...

nat54

XLDnaute Barbatruc
Bonjour,

La formule suivante fonctionne :
=SOMME.SI.ENS(TbAbsence[[#Tout];[Nb Jrs Ouvres]];TbAbsence[[#Tout];[Nom]];A7;TbAbsence[[#Tout];[Type]];B7;TbAbsence[[#Tout];[Date Début Mois]];">="&C7;TbAbsence[[#Tout];[Date Fin Mois]];"<="&D7)

PS : horrible les formules avec un tableau structuré mais comme c'est votre choix ...
 

eric72

XLDnaute Accro
Bonjour nat54,

Merci beaucoup pour cette réponse, en effet cela fonctionne bien, je n'arrive pas à comprendre pourquoi ça ne fonctionne pas avec SOMMEPROD!!!
Merci encore et bonne journée
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Enrichi (BBcode):
=SOMMEPROD((TbAbsence[Nom]=A7)*(TbAbsence[Type]=B7)*(TbAbsence[Date Début Mois]>=C7)*(TbAbsence[Date Fin Mois]<=D7)*(TbAbsence[Nb Jrs Ouvres]))

A quoi sert la dernière partie de ta formule ?
Si tu la supprimes, est-ce que tu obtiens le résultat désiré ?
 

nat54

XLDnaute Barbatruc
Re,
Euh je réponds à sa place mais il veut la somme des jours ouvrés donc c'est bien le critère qu'il met en dernier.
Je ne sais pas pourquoi son sommeprod ne fonctionne pas.
Depuis que j'ai découvert (il y a 2 ans ?) somme.si.ens, je le trouve beaucoup + simple d'utilisation et - gourmand
 

TooFatBoy

XLDnaute Barbatruc
je réponds à sa place mais il veut la somme des jours ouvrés donc c'est bien le critère qu'il met en dernier.
Merci pour ta réponse.

Perso, il ne me semble pas correcte de mettre l'ensemble du tableau comme critère final.
Mais vu que je ne sais pas résoudre le problème avec un SommeProd, je peux me tromper.

Je tenterais plutôt un truc dans le genre *(TbAbsence[Date Fin Mois]-TbAbsence[Date Début Mois]+1) comme critère final.
Mais même là, j'ai l'impression que ça ne prend pas en compte tous les cas possibles.
 
Dernière édition:

ALS35

XLDnaute Impliqué
Bonjour à tous,
Le pb vient du fait que la formule dans la colonne Nb Jrs Ouvres en F2 renvoie un texte vide "".
Soit on remplace dans la formule la valeur vide "" par 0 et c'est bon mais pas trop joli, soit on met une fonction SI du style :
...*SI(TbAbsence[Nb Jrs Ouvres]="";0;TbAbsence[Nb Jrs Ouvres])
Cordialement
 

TooFatBoy

XLDnaute Barbatruc
Perso, il ne me semble pas correcte de mettre l'ensemble du tableau comme critère final.
Mais vu que je ne sais pas résoudre le problème avec un SommeProd, je peux me tromper.
N'importe quoi !!!! Ce n'est pas l'ensemble du tableau mais bien la colonne "Nb Jrs Ouvres" qui est mis en critère final, et c'est bien ce qu'il faut faire !

Donc c'est comme l'a parfaitement dit ALS35 et comme j'avais écrit mais supprimé... c'est parce que tu as une "case vide"...
En fait la case en question n'est pas exactement vide, elle contient un texte vide, et SommeProd n'est pas très copain avec les cellules contenant un texte vide.

On peut utiliser un format personnalisé pour masquer le 0.
 

klin89

XLDnaute Accro
Bonjour à tous,

Pour information, on peut utiliser les tableaux structurés et conserver la notation des formules habituelles.
Il suffit de décocher une option dans les options d'Excel, Formules et Manipulations des formules.
On conserve évidemment les propriétés d'un tableau structuré.

Klin89
 

Pièces jointes

  • 18632_63ccf9139ebe1896876457.png
    19.9 KB · Affichages: 11

nat54

XLDnaute Barbatruc
Woooooow génial ça ! Car clairement l'autre affichage est illisible
Merci !!!!!!!!!!!!
 

Herculee66

XLDnaute Nouveau
Bonjour, votre formule peut également très bien fonctionner avec sommeprod. Il suffit juste de modifier le dernier argument de la formule :
VB:
=SOMMEPROD((TbAbsence[Nom]=A7)*(TbAbsence[Type]=B7)*(TbAbsence[Date Début Mois]>=C7)*(TbAbsence[Date Fin Mois]<=D7)*ESTNUM(TbAbsence[Nb Jrs Ouvres]);(TbAbsence[Nb Jrs Ouvres]))

Sommeprod n'aime pas les cellules vides (ou plus largement les cellules qui ne sont pas des nombres sur la plage à sommer). Pour contourner le problème, il faut rajouter la fonction estnum sur la plage à sommer qui permet de ne prendre en compte que les données numériques.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
263
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…