renvoyer une liste de valeurs remplissant une condition

kooaal

XLDnaute Nouveau
Bonjour,

cela me semble être une question bête mais j'ai pas trouvé de réponse sur le forum donc je poste un truc.

j'ai une bdd des achats de chaque client à chaque fournisseur.

certains clients n'achète pas auprès de certains fournisseurs.

Je souhaiterai avoir pour chaque client la liste des fournisseurs ou achat>0 la ligne en dessous le chiffre.

je pensais à un sommeprod() pour chaque ligne mais ce dernier me renvoi la somme ^^

je pensais à SI(données!B5:Q5>0;données!B5:Q5) mais il ne garde pas que les valeurs >0 et me renvoie FAUX pour ces dernières.

comment puis je récupérer une liste avec uniquement les valeurs remplissant la condition(>0)?
l'idéal serait un sommeprod mais sans la somme, une fonction qui ferait un produit matriciel en renvoyant toutes les valeurs.

je vous remercie d'avance
 

Pièces jointes

  • exemple XLD.xls
    24 KB · Affichages: 59
  • exemple XLD.xls
    24 KB · Affichages: 61
  • exemple XLD.xls
    24 KB · Affichages: 62

Dugenou

XLDnaute Barbatruc
Re : renvoyer une liste de valeurs remplissant une condition

Bonjour,
Cette formule donne le bon résultat quand on a le fournisseur et le client :
=SOMMEPROD(($B$4:$Q$4=B$31)*($A$5:$A$19=$A31)*$B$5:$Q$19)
Pour avoir la liste des forunisseurs non nuls pour chaque client il faudra passer par une formule matricielle.
Avez-vous pensé au tableai croisé dynamique ?
Cordialement
 

kooaal

XLDnaute Nouveau
Re : renvoyer une liste de valeurs remplissant une condition

j'ai pensé au TCD mais ce dernier ne me permet pas de sélectionner uniquement les fournisseurs non nul pour chaque client.
à chaque fois cela me donne l'ensemble des fournisseurs.

vous parlez d'une formule matricielle, quelle fonction permet d'avoir la liste des fournisseur non null?
 

Dugenou

XLDnaute Barbatruc
Re : renvoyer une liste de valeurs remplissant une condition

Re,
C'est un ensemble de fonctions :
equiv() permet de localider la ligne d'un client,
decaler(equiv()) permet d'indiquer la ligne de CA du client,
SI(decaler(..)>0;colonne()) permet de construire une matrice composée des valeurs du N° de colonne ou il y a un CA (sinon Faux)
petite.valeur(Si(...);colonnes()) permet d'appeler les valeurs dans l'ordre en finissant pas les faux
et Index(A4:Q4;;(petite.valeur(....)) permet d'afficher le fournisseur correspondant :
Code:
INDEX($A$4:$Q$4;;PETITE.VALEUR(SI(DECALER($B$4:$Q$4;EQUIV($A31;$A$5:$A$19;0);)>0;COLONNE($B$4:$Q$4));COLONNES($A31:A31)))
A valider par ctrl+maj+enter pour faire apparaître des {} autour de la formule

Dans le fichier ça paraît plus lourd car j'ai utilisé Si(esterreur(formule);"";formule) qu'on peut remplacer par sierreur(formule;"") en version 2010.
Cordialement
 

Pièces jointes

  • kooaal.xls
    57.5 KB · Affichages: 79
Dernière édition:

Discussions similaires

Réponses
7
Affichages
235

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote