• Initiateur de la discussion Initiateur de la discussion NicoLaRochelle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

NicoLaRochelle

Guest
Bonjour à tous !

J'ai une base de données qui contient tous les ingrédients de recettes.
Celles-ci sont classées par n°
L'important pour moi est d'identifier quel type de viande est à sortir seulement cet ingrédient n'est jamais à la même place car celle-ci dépend de sa proportion dans la recette.

J'aimerais donc qu'en tapant le n° de la recette, on retrouve quelle viande est présente dans la liste d'ingrédient à partir d'une liste de type de viande définie.

J'ai tenté les RechercheV mais je n'arrive pas à lui faire comparer toute la liste de viande avec la liste d'ingrédients...

cf. fichier joint.

Je n'ai pas réussi à trouver mon bonheur dans les archives (peut être que mes mots clés ne sont pas pertinents).



Merci d'avance à tous !
 

Pièces jointes

Dernière modification par un modérateur:
Re : Double recherche

Salut Nico,

Regarde le fichier joint.

J'ai ajouté une formule en face de chaque ingrédient + une formule en B4.

Je reste persuadé qu'il y a moyen de faire ça en une seule formule (matricielle certainement), mais je n'ai pas trouvé.

Peut-être que d'autres forumeurs passeront pour te donner une solution en une seule formule, ce qui m'intéresserait également).

@+

Edit : salut ODVJ : pas rafraîchi à temps et donc pas vu ta réponse. C'est bien ce qu'il me semblait, on peut le faire en une seule formule. Merci pour cette petite démonstration.

@+
 

Pièces jointes

Re : Double recherche

Encore une fois, vous me retirez une sacrée épine du pied...

J'avoue que la solution d'ODVJ me semble plus pratique mais j'applaudie tout de même Tibo.

Gros respect et merci encore.
 
Re : Double recherche

J'ai du mal à piger le raisonnement d'ODVJ et je reste bluffer...
Tu peux m'expliquer stp ?

J'aimerai pouvoir appliquer ça en le comprenant.

Idem pour toi Tibo, franchement... vous turbinez sous le casque !
 
Re : Double recherche

re,

Une "petite" explication :

Formule en B13 :

EQUIV($B$3;BDD!$A:$A;0) : me donne le numéro de ligne de la recette dans BDD

INDIRECT("BDD!L"&EQUIV($B$3;BDD!$A:$A;0);0) : la fonction INDIRECT me permet de « construire » une formule à) partir du numéro de ligne déterminé ci-dessus

ESTNUM(EQUIV("*"&$A12&"*";INDIRECT("BDD!L"&EQUIV($B$3;BDD!$A:$A;0);0));0) : me répond VRAI ou FAUX si la ligne contient le libellé (POULET, …).


=(ESTNUM(EQUIV("*"&$A13&"*";INDIRECT("BDD!L"&EQUIV($B$3;BDD!$A:$A;0);0);0)))*LIGNE()

Pour Excel, VRAI=1, FAUX=0, donc je multiplie 0 ou 1 par le numéro de la ligne, ce qui me donne le numéro de la ligne correspondant à l’ingrédient.


Formule en B4 :

SI(ESTERREUR(DECALER($A$11;SOMME($B$12:$B$20)-11;0));"pas de viande";DECALER($A$11;SOMME($B$12:$B$20)-11;0))

Ensuite, avec la fonction DECALER, je vais rechercher l’info dans BDD. Si il n’y a pas de viande, il me renvoie un message d’erreur, d’où le test SI(ESTERREUR(….

Explication peut-être un peu longue. L’essentiel est de bien décomposer la formule en sous-formules pour en comprendre la logique.

Bon app

@+
 
Re : Double recherche

Bonjour,

un peu de retard pour les explications :

EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0) :
n° de l'indice ligne du tableau des recettes où se trouve la recette dont le n° est saisi en B3

INDEX(BDD!$B$2:$R$109;EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0);0) :
matrice Bi:Ri (grace au 0 à la fin) des ingrédients de la recette saisie en B3

CHERCHE("*"&$A$12:$A$20&"*";INDEX(BDD!$B$2:$R$109;EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0);0)) :
matrice des retours de la fonction cherche pour chaque cellule de la matrice Bi:Ri.
Soit #valeur si pas trouvé, soit position de la chaîne cherchée dans la cellule de Bi:Ri

SI(ESTERREUR(CHERCHE("*"&$A$12:$A$20&"*";INDEX(BDD!$B$2:$R$109;EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0);0)));10;LIGNE($A$12:$A$20)-1) :
Remplacement des #valeur par le n° de la ligne où est indiqué "pas de viande" ou, lorsqu'un ingrédient de la liste est trouvé, ligne de cet ingrédient (moins 1 pour préparer le futur décaler)

MAX(SI(ESTERREUR(CHERCHE("*"&$A$12:$A$20&"*";INDEX(BDD!$B$2:$R$109;EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0);0)));10;LIGNE($A$12:$A$20)-1)) :
de la matrice précédente qui contient des nombres 11 ("pas de viande") à 20 ("crevette" trouvé), il faut extraire une valeur. D'où le MAX.

DECALER(A1;MAX(SI(ESTERREUR(CHERCHE("*"&$A$12:$A$20&"*";INDEX(BDD!$B$2:$R$109;EQUIV(Réponse!$B$3;BDD!$A$2:$A$109;0);0)));10;LIGNE($A$12:$A$20)-1));0) :
ne reste plus qu'à décaler A1 de ce MAX en ligne et de 0 en colonne pour rester colonne A

Pour ce qui est des turbines sous casques, je ne suis qu'apprenti.
La turbine en chef s'appelle Monique.

cordialement

PS : avec une pièce jointe, ce sera plus clair
 

Pièces jointes

Dernière édition:
Re : Double recherche

Bonjour,

Me voilà chef, maintenant ! Et turbine en plus !

La même chose en plus court.

Min(Si(Condition;Ligne(plage))) ou Max(Si(Condition;Ligne(plage)))
renvoient 0 quand il n'y a pas de correspondance
On n'a donc pas besoin de Max(Si(Esterr())

Index(A:A;0) validé par ctrl, maj et entrée, renvoie le contenu de A1
Et A1 contient "Pas de viande"

J'ai mis un format conditionnel dans la Bdd parce que que j'ai failli me perdre.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
254
Réponses
7
Affichages
1 K
Retour