Simplification de formule de recherche

VincentM

XLDnaute Nouveau
Bonjour à tous,

après réflexion, je bloque sur la simplification d'une de mes formules.

ci-joint l'exemple qui va être beaucoup plus parlant qu'une grande tirade.
Petite explication :
je télécharge une base de donnée avec les résultats d'analyse de différentes flores pour 1 produit.
Une ligne correspond à un produit et pour chaque produit plusieurs colonnes de données:
- Nom du produit
- Flore 1
- Résultat 1
- Flore 2
- Résultat 2
- Flore 3
- Résultat 3
....
Les flores de chaque colonnes n'étant pas identiques, j'aimerais faire un bilan dans une autre colonne pour chaque flore (voir fichier). J'utilise pour le moment une formule 'si multiple, assez lourde (voir exemple en colonne K).
Auriez-vous une idée de simplification de cette formule ?

Merci à vous,
Cdt,
 

Pièces jointes

  • Test-recherche-03-2013.xlsx
    9 KB · Affichages: 37

Dugenou

XLDnaute Barbatruc
Re : Simplification de formule de recherche

Bonjour,
Si le titre de la colonne est exactement identique au texte cherché, si on a toujours le résultat dans le première colonne à droite de la colonne floreX et si le nom cherché n'est présent qu'une fois sur la ligne :
Code:
=SIERREUR(INDEX($C5:$I5;EQUIV(K$4;$B5:$H5;0));"-")
se recopie en bas et à droite, peux être étendue su plus de colonnes.
Mais ne renverra toujours que la première occurence

Voir PJ,
Cordialement
 

Pièces jointes

  • vincentM recherche.xlsx
    9.4 KB · Affichages: 25

VincentM

XLDnaute Nouveau
Re : Simplification de formule de recherche

Merci, pour la réponse :
- Le titre des colonnes est identique au texte présent dans les lignes
- Une seul occurence sur chaque ligne
- Les résultats ne sont malheureusement pas dans la première cellule à droite du résultat
En sachant que le nombre de colonnes séparant le nom de la flore du résultat est identique, en rajoutant "+x" dans la formule je tombe du coup sur ma colonne résultat (avec x=chiffre):
Code:
=SIERREUR(INDEX($C5:$I5;EQUIV(K$4;$B5:$H5;0)[COLOR="#FF0000"][B]+x[/B][/COLOR]);"-")

Si le nombre de colonne varie par contre (ce qui n'est pas le cas, c'est un tout autre problème).

Si je résume (car je tâtonne encore avec les fonctions equiv et index) :
Code:
x=EQUIV(K$4;$B5:$H5;0)
Va me donner le numéro de la colonne où est présent la première occurrence de mon texte (K4) dans la matrice sélectionnée (B5:H5).

Code:
y=INDEX($C5:$I5;x)
Obtenir la valeur présent dans la cellule de la colonne x de la matrice (C5:I5).

Code:
=SIERREUR(y;"-")
Si absence d’occurrence dans la ligne, renvoie la valeur "-".

Est-ce bien cela ?
 

Dugenou

XLDnaute Barbatruc
Re : Simplification de formule de recherche

Vincent,
Je suis ravi de ta réponse ! oui c'est exactement cela !
J'étais en train d'asticoter Kedoh et voici que tu me donnes exactement ce que j'attendais !
Bravo !
Une précision : pour le equiv le dernier argument 0 signifie qu'on cherche une correspondance exacte.
Il peut arriver qu'on cherche une valeur qui ne soit pas dans la liste (un tableau par tranche par exemple de 0à500, de 501 à 1000 etc) à ce moment là on utilisera 1 au lieu de 0 mais les valeurs devront être classée dans l'ordre.
Une autre précision : pour le si erreur ce n'est pas l'absence d'occurence mais bien la valeur d'erreur renvoyée par la formule qui déclenche l'affichage du "-". Je veux dire si le equiv renvoie une valeur supérieure au nb de colonne de l'index on aura aussi "-".

Cordialement et à ta disposition pour d'autres questions !
 

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel