Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Recherche d'une cellule et affichage de l'en-tête correspondant

Tinade

XLDnaute Nouveau
Bonjour,

Je souhaite récupérer l’en-tête d'une colonne correspondant à une cellule que je dois trouver dans le tableau via une recherche basé sur la première colonne.

J'ai un peu de difficulté à l'expliquer.

Concrètement, je souhaite obtenir le prénom correspondant a "A" dans la ligne correspondant a "1" (on obtient donc, "Albert") les valeurs 1 et A se trouveront dans un tableau a part a coté du quel sera affiché le résultat.


Base de donnée
AlbertBorisJeremyArthurLucas
1ABCED
2BADFI
3DEACF
4GCDBE
5JKEBC
6CABIG

Je vous joins le fichier pour vous donnez un meilleur apercu, j'ai tenter a base de recherchev, index et equiv sans réussir, ayant peu d'expérience avec ces formules.
 

Pièces jointes

  • TESTRECHERCHE.xlsx
    10.5 KB · Affichages: 15
Solution
Bonsoir Tinade,
Avec juste une petite formule :
VB:
=SIERREUR(INDEX($C$3:$G$3;EQUIV(J3;INDIRECT("C"&EQUIV(I3;$B:$B;0)&":G"&EQUIV(I3;$B:$B;0));0));"")
INDIRECT sert à faire comprendre à XL que la valeur est une plage et non une valeur.
SIERREUR met "" si une erreur survient, cas où les valeurs recherchées n'existeraient pas.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Tinade,
Avec juste une petite formule :
VB:
=SIERREUR(INDEX($C$3:$G$3;EQUIV(J3;INDIRECT("C"&EQUIV(I3;$B:$B;0)&":G"&EQUIV(I3;$B:$B;0));0));"")
INDIRECT sert à faire comprendre à XL que la valeur est une plage et non une valeur.
SIERREUR met "" si une erreur survient, cas où les valeurs recherchées n'existeraient pas.
 

Pièces jointes

  • TESTRECHERCHE.xlsx
    10.4 KB · Affichages: 12

Tinade

XLDnaute Nouveau
eh ben merci !

A force de test j'ai réussi à obtenir le résultat que voici :

VB:
=filter($C$3:$G$3;indirect(concatenate("C";(MATCH($J4;$B$3:$B$400)+2);":G";(MATCH($J4;$B$3:$B$400)+2)))=$K4)

Je pense que c'est assez proche, mais l'utilisation du "+2" me dérange.

Petite question il y a t'il une chance de pouvoir ce débarasser de "C" et ":G" dans le sens ou si j'ajoute une colonne avec un nouveau prénom il faudrait que je décale la formule.

En tout cas merci beaucoup pour le temps passé !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Ma formule fonctionnait, pourquoi l'avoir modifiée ?
En passant de $B:$B à $B$3:$B$400, cela génère évidemment un offset +2.
Pourquoi utiliser Concatenate puisque "&" remplit cette fonction ?
Avec Indirect difficile de supprimer les C et G. Peut être en changeant d'approche mais je ne vois pas, ou passer en VBA ce qui serait plus simple. Voire avec une fonction perso.
 

Tinade

XLDnaute Nouveau

Désolé pour l'incompréhension mais je n'ai pas modifiée la formule que vous m'avez donné, j'avais juste persévéré est réussi a produire celle ci entre temps, la votre étant en effet plus simple.

Je ne comprend pas comment la fonction index remplace ma fonction filter, ainsi que l'absence de concatenate remplacé par & mais ça fonctionne parfaitement et je vous en remercie.

Problème résolu.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
La seconde syntaxe de Index est Index(Ligne, Colonne ) où ici Ligne et Colonne sont donnés par les Equiv.
& fait la concaténation de plusieurs chaînes. Donc plus simple à utiliser que Concatenate.
( par ex : "Il "&"fait "&"beau" donnera : Il fait beau.)
 

Tinade

XLDnaute Nouveau
Question subsidiaire, cette formule me sert en réalité sur Google Sheet, serait il possible de l'appliquer a des données d'un autre document ?

Actuellement j'importe les données via importrange dans une feuille a part, et j'envoi ma formule chercher les données dans cette feuille.
Mais est il possible de faire un mix entre importrange et la formule directement pour éviter une feuille supplémentaire dans mon document ?
 

Discussions similaires

Réponses
3
Affichages
262
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…