en C1, on récupère par formule le Nom de la feuille correspondant à la sélection en B1? =SI(B1="Table_1_Référence";"Data_1";"Data_2")
principe utilisé pour récupérer les données .
Cellule A, formule; =INDIRECT("'"&$C$1&"'!"&CAR(COLONNE()+65)&LIGNE()-1)
Suivant le choix de la liste déroulante, il faut pointer vers la bonne feuille, c'est en C1 que se trouve son nom. =INDIRECT("'"&$C$1&"'!" si C1 =Data_1, la fonction INDIRECT sera équivalente à "=Data_1!"
Il faut ensuite indiquer dans quelle colonne se trouve la valeur à rapatrier, pour le code, la colonne se trouve en B, c'est ceci: CAR(COLONNE()+65) qui va s"en charger.
COLONNE() donne le N° de la colonne où se trouve la formule (ici en colonne A de la feuille '"Results", soit la colonne 1)
Nous, on veut la colonne 2 de la feuille Data, mais il nous faut sa lettre et pas son n°. pour cela on convertir le N° en lettre avec la fonction CAR, la lettre A vaut 65 dans le code ASCII , le B =66 etc.. Donc CAR(COLONNE()+65) ---> CAR(1+65) = B, on pointe bien sur la colonne B.
Pour la ligne LIGNE(), donne le N° de ligne sur laquelle se trouve la formule, dans A3 la ligne c'est 3 or, les données de la feuille "Data" commencent à la ligne2, il suffit donc de soustraire 1 à la ligne en cours.
Donc la formule =INDIRECT("'"&$C$1&"'!"&CAR(COLONNE()+65)&LIGNE()-1) pourrait s'écrire: =Data_1!B2
Mais l'avantage, c'est quelle peut se recopier dans tous les sens sans rien changer.
pour le 2ème tableau c'est la même chose sauf que la colonne de référence est en E (5), il ,faut donc enlever 4 CAR(COLONNE()+65-4) --> CAR(COLONNE()+61)
J'espère que cela va vous aider .
Cdlt