recherche cumulée avec plusieurs plages

Gael

XLDnaute Barbatruc
Bonjour à tous,

J'ai un petit souci dans une application en entreprise qui me paraissait simple au départ et pour lequel j'ai du mal à finaliser une solution.

A partir de la composition d'un produit fini et d'une table de matières premières définissant les allergènes contenues dans chacune, l'objectif est de définir quelles sont les allergènes contenues dans le produit fini (il s'agit bien sûr de produits alimentaires).

En plus de cet objectif, je serai vraiment content si quelqu'un pouvait m'expliquer pourquoi ma formule ne marche pas!!!

Je vous envoie un exemple ci-joint avec des explications plus claires.

Comme j'avais promis de passer du coté obscur de la force en ce début d'année, je suis bien entendu ouvert à toute solution VBA.

Merci d'avance de votre aide

@+

Gael [file name=allerg.zip size=14048]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/allerg.zip[/file]
 

Pièces jointes

  • allerg.zip
    13.7 KB · Affichages: 27

Monique

Nous a quitté
Repose en paix
Bonjour,

Pour avoir le nb total d'allergènes :
=SOMMEPROD(NB.SI(Compo;Codes_MP)*(Allerg='a'))

Pour compter le nb d'allergènes par produit :
=SOMMEPROD((DECALER(Lign;EQUIV(C5;Codes_MP;0);)='a')*1)
(Lign = ligne des titres)

Nb de fois où l'allergène en E5 est présent dans la composition
=SOMME(SI(NB.SI(Compo;Codes_MP);(DECALER(Codes_MP;;EQUIV(E5;Lign;0))='a')*1))

(la dernière est à valider par ctrl, maj et entrée)

La formule que tu utilisais ne fonctionne pas non plus sur 2 cellules, je crois.
Pourquoi elle ne fonctionne pas, je ne sais pas,
mais EQUIV($C$5:$C$17;Codes_MP;0) en matriciel donne le nb de valeurs de Codes_MP [file name=AllergGael.zip size=13499]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/AllergGael.zip[/file]
 

Pièces jointes

  • AllergGael.zip
    13.2 KB · Affichages: 36

Gael

XLDnaute Barbatruc
Bonjour Monique,

Merci beaucoup pour ta réponse.

Tes formules fonctionnent parfaitement et c'est vraiment très bien pensé.

Pour ta dernière remarque, j'ai revérifié et la formule EQUIV($C$5:$C$17;Codes_MP;0) donne bien une matrice des n°s de ligne des codes composant le produit. Sur la cellule tu obtiens 119 qui est bien le n° de ligne du 1er code (A9999 est en dernier dans la liste) et si tu étends la matrice, tu auras tous les autres n°s de ligne.

En tous cas, merci de ton aide, je vais enfin pouvoir avancer cette application.

@+

Gael
 

Gael

XLDnaute Barbatruc
Bonsoir à tous,

Monique, ta solution marche très bien mais les 2 fichiers doivent être ouverts. As-tu une idée avec une fonction qui peut travailler sur un fichier fermé?

Grâce aux explications de Jean-Marie dans un autre Fil, j'ai essayé avec BDSOMME mais c'est pareil.

Merci d'avance.

@+

Gael
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Decaler() ne va pas

Colonne D :
=SOMMEPROD((Codes_MP=C5)*(Allerg='a'))

Sinon :
La liste des allergènes de cette manière :
=INDEX(Lign;LIGNES(E$5:E5))

Un SommeProd 'au carré' colonne F :
=SOMMEPROD(NB.SI(Compo;Codes_MP)*(Allerg='a')*(Lign=E5))

Chez moi, ces formules fonctionnent la feuille 'Table_MP' enlevée, enregistrée et fermée [file name=AllergGaelV1.zip size=12984]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/AllergGaelV1.zip[/file]
 

Pièces jointes

  • AllergGaelV1.zip
    12.7 KB · Affichages: 31

Gael

XLDnaute Barbatruc
Bonjour Monique,

C'est super, ça marche très bien fichier ouvert ou fermé et la formule est encore plus simple mais je n'avais pas pensé à Sommeprod sur ce coup là.

Un grand merci pour ton aide.

Je t'offre un Ti'punch à ton prochain passage aux Antilles.

@+

Gael
 

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94