XL 2016 Sommeprod pour liste auto incrémentée multi-conditions

Etxezarreta

XLDnaute Nouveau
Bonjour,
Je génère une liste depuis une table pour créer une colonne de tableau, avec une condition.
je pars de la colonne [CLE] de tabCommandes dans l'onglet "Commandes" et je crée une liste d'intitulés qui s'auto incrémente et qui démarre en C3 de l'onglet "Gestion chantiers".
Comme vs le verrez dans le fichier (onglet "Gestion chantiers" à partir de C3 donc), la formule est =SIERREUR(INDEX(tabCommandes[CLE];EQUIV(1;INDEX((1-NB.SI(C$2:C2;tabCommandes[CLE]))*(NB.SI($C$1;tabCommandes[eAvancement]));0;0);0)); "")

La condition est donc la valeur de $C$1. Je souhaite rajouter un "ou" dans les conditions, et je pensais utiliser sommeprod:
sommeprod((tabCommandes[eAvancement]=$C$1)+(tabCommandes[eAvancement]=$B$1)).
Mais ça ne fonctionne pas, même avec une seule condition, alors que le dénombrement des lignes qui satisfont à l'une ou autre condition paraît bon.
Vous trouverez le fichier en pj.
Merci d'avance de vos suggestions.
Etxe.
 

Pièces jointes

  • RemplacementNBSI par SOMMEPROD.xlsm
    161.4 KB · Affichages: 5

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

En colonne B la formule suivante (beaucoup moins gourmande que sommeprod) renvoie le numéro de ligne remplissant les conditions:
=SIERREUR(AGREGAT(15;6;LIGNE(tabCommandes[CLE])/((tabCommandes[eAvancement]=$B$1)+(tabCommandes[eAvancement]=$C$1));LIGNE(1:1));0)

Elle ne tient pas compte des erreurs éventuellement présente dans tabCommandes.
Si elle ne trouve rien elle renvoie 0

Il faudra juste faire attention, si vous déplacer le tableau tabCommandes, à ce que le calcul de postion soit juste.
La colonne C renvoie la cle du client si B>0

Cordialement
 

Pièces jointes

  • RemplacementNBSI par SOMMEPROD.xlsm
    161.8 KB · Affichages: 6

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Agregat permet d'appliquer une fonction sur une matrice en évitant les valeurs d'erreurs et/ou les lignes masquées.
Ici on applique la fonction Petite.Valeur en produisant des erreurs de calcul en divisant le numéro de ligne par la condition (Vrai=1; Faux=0)
Ligne()/0 => Erreur @div/0
Gràce à agregat ces erreurs de division par zéro ne seront pas prises en compte.
Voir l'aide MS sur les détails de la fonction.

Elle est moins gourmande en ressources que sommeprod mais comme toute fonction utilisant des matrices, faire attention à ne pas trop les mutliplier si vous ne voulez pas créer de ralentissement de calcul.

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 148
dernier inscrit
lulu56