XL 2019 Rechercher la valeur d'une cellule dans une table excel

CaptnCavern

XLDnaute Nouveau
Bonjour,
dans le tableau ci-joint, je cherche une formule permettant de retrouver à partir d'une référence issue des colonnes A F ou K, sa valeur équivalente en colonne D I ou J.
Le problème du rechercheV ou index/equiv est qu'il faut connaitre au départ dans quelle colonne est la valeur finale recherchée.
Or, dans mon cas, ma donnée de départ peut-être dans l'une de ces 3 colonnes (A, F, K), et je ne connais donc pas si la valeur finale sera en D,I ou J.
L'objectif à terme est de combiner les mini-tableaux en un seul.
Merci par avance pour votre aide.
 

Pièces jointes

  • recherche.xlsx
    10.3 KB · Affichages: 17

CaptnCavern

XLDnaute Nouveau
Bonjour à tous,

Comme ce sont les meme references dans les trois tableaux verts, c'est les 3 prix qu'il te faut ?

Crdlmt
Bonjour Djidji. En fait, il y a une nuance, ce ne sont pas les mêmes références. Oui c'est le prix de la référence que je recherche. Pour cela, ma difficulté est d'abord de trouver la référence dans la table complète, puis le prix associé.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Une proposition par power query. Empilement des 45 références et leurs valeurs.

Cordialement

[Edition]ai remplacé List.Select par List.RemoveNulls[/Edit]
 

Pièces jointes

  • CaptnCavern.xlsx
    26.5 KB · Affichages: 3
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous aurez noté que j'ai nommé 'Datas' la plage A1:N16 et traiter une seule 'Table' de départ.

Il y a d'autres possibilités, bien entendu :)
Si vous avez des questions sur la requête, n'hésitez pas à poster.

Cordialement
 
Dernière édition:

djidji59430

XLDnaute Barbatruc
Bonjour à tous,

Je l'avais fait en faisant trois requêtes (une par tableau, les mettre au propre, puis les ajouter). Apres je me suis dit que sur 100 tableaux, c'était du taf !!
J'ai cherché sur ton fichier, mais ta façon de faire, je ne connais pas.
Comment fait-on les étapes avec les listes ? En littéral, ou à la souris ?
Si tu veux partager ton savoir ....
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

C'est vrai que c'est fait par la barre de formule de l'éditeur PQ ou dans l'affichage avancé.
J'en édite ici un exemplaire commenté.
L'étape la plus délicate est celle de la sélection des bonnes colonnes. Il faut trouver un 'truc' pour ne conserver que les colonnes de référence et de valeur.
J'ai décidé d'utiliser leur index de position, d'en faire une liste et de ne conserver que celles dont le reste de la division par 5 était 1 ou 4.
Comme je ne suis pas un gros matheux, il y a peut-être mieux.
let
Source = Excel.CurrentWorkbook(){[Name="Datas"]}[Content],
// Sauter la ligne d'entête qui est inutile
#"Sauter première ligne" = Table.Skip(Source,1),
// retourner la liste des noms de colonnes pour utilisation ultérieure
#"Noms colonnes" = Table.ColumnNames(#"Sauter première ligne"),
// Création d'une liste numérique de 1 au nombre de colonnes de la table.
// Sélection des colonnes dont le reste de l'index ordinal divisé par 5 est 1 ou 4.
// pour ne conserver que les colonnes de référence et de valeur
#"Colonnes a conserver" = List.RemoveNulls( List.Transform({1..List.Count(#"Noms colonnes")},each let M=Number.Mod(_,5) in if M=1 or M=4 then #"Noms colonnes"{_-1} else null)),
// Faire des sous listes des noms de colonnes à conserver afin de les traiter par 2.
#"En sous-listes" = List.Split( #"Colonnes a conserver",2),
// Sélectionner les colonnes de la table d'origine correspondant à nos sous listes

#"En Tables" = List.Transform(#"En sous-listes",each Table.SelectColumns(#"Sauter première ligne",_)),
// Transformer les tables en lignes et les combiner ensemble.
#"En Lignes" = List.Combine( List.Transform( #"En Tables",Table.ToRows)),
// Transformer la liste des lignes en table, avec les nouveaus noms de colonnes.
Resultat = Table.FromRows(#"En Lignes",{"Référence", "Valeur"})
in
Resultat
En relisant je vois que j'aurai pu faire la liste des positions de colonnes par {0..List.Count(#"Noms colonnes")-1}
Ce qui aurait évité le -1 dans la sélection du nom (#"Noms colonnes"{_-1})
L'étape "Colonnes à conserver" devenant :
= List.RemoveNulls( List.Transform({0..List.Count(#"Noms colonnes")-1},each let M=Number.Mod(_,5) in if M=0 or M=3 then #"Noms colonnes"{_} else null))

[Edition]ai remplacé List.Select par List.RemoveNulls[/Edit]
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une proposition par formule.

C'est une formule matricielle à valider par Ctrl+Maj+Entrée (en Excel 2019, la validation matricielle n'est peut-être pas requise).
VB:
=INDIRECT(JOINDRE.TEXTE("";VRAI;SI(A$1:K$16=A20;ADRESSE(LIGNE(A$1:K$16);COLONNE(A$1:K$16)+3);"")))
 

Pièces jointes

  • CaptnCavern- recherche- v1.xlsx
    11.4 KB · Affichages: 8
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon