Gestion des liens de lecture dans une cellule

Bonjour,

Je me suis torturé le cerveau toute la journée sur ce sujet et je reste bloqué, c'est pour quoi je demande de l'aide à la communauté.

Dans mon fichier j'utilise plusieurs VLOOKUP() pour chercher des données. Ces VLOOKUP() pointent vers une feuille excel qui n'est pas dans le classeur en question.

Je souhaite placer le chemin précis dans une cellule et que le VLOOKUP() lise cette cellule, car l'intégralité des VLOOKUP() vont chercher dans les mêmes feuilles.

Cependant j'au eu beau essayer ceci ne me donne rien. J'ai copié le chemin brut qui est dans la formule et l'ai collé dans une cellule; puis j'ai modifié la formule pour pointer vers cette cellule mais ça ne fonctionne pas.

Je ne sais pas si mon sujet est clair, j'ai cherché sur le forum, mais je n'ai rien trouvé de similaire.

J'espère qu'on arrivera à trouver une solution ;)

Merci

Bonjour,

Si vous avez un classeur 2 avec en A1 la valeur A et en B1 la valeur B. Dans votre classeur initial, si en AA vous avez la valeur A et en A1 le lien vers le classeur du type "'C:\Users\****\Desktop\[Nouveau Feuille de calcul Microsoft Excel (2).xlsx]" (notez les crochets entouré du classeur) alors via la formule INDIRECT en B4 :

=RECHERCHEV(A4;INDIRECT("'"&A1&"Feuil1'!$A:$B";VRAI);2;FAUX)

Par contre INDIRECT requiert que le classeur source soit ouvert, sinon #REF est renvoyé. Sinon il faudra passer par VBA ou POWER QUERY. C'est pourquoi je déconseille la liaison entre classeur, qui pose souvent plus de problème qu'autre chose.

Si ça ne correspond pas merci de joindre un fichier représentatif et d'exprimer plus clairement le besoin.

Cdlt,

Bonjour,

Malheureusement ça ne résout pas mon problème…

Pour être plus clair dans mes explications :

J’ai mon fichier de travail le fichier « Fichier1 » dans ma cellule A1 j’ai la formule suivante : =VLOOKUP(« MARG » ;'N:\test\[ Fichier2.xlsm]Sheet1'!$A:$C;3;FALSE)

Je lis donc la valeur dans mon « Fichier2 ».

Je souhaite mettre le chemin de lecture dans la cellule B2 de mon « Fichier1 » et donc avoir la formule suivante dans la cellule A1 : =VLOOKUP(« MARG » ;B2;3;FALSE)

J’ai réalisé ceci mais ça ne fonctionne pas…

L’objectif est si je change le « Fichier2 » (qui est un base de données) de place sur le réseau. Je n’aurais alors besoin que de modifier le lien dans la cellule B2 et les autres formules qui utiliseront ce chemin de lecture se mettront à jour.

J’espère que ma requête est plus claire à présent 😉

Bonjour,

Si ça devrait résoudre votre problème, en suivant vos explications la formule ci-contre fonctionne. Passage de anglais à français car mon EXCEL est français :

=RECHERCHEV("MARG";INDIRECT("'"&B2&"Feuil1'!$A:$C";VRAI);3;FAUX)

Et les fichier qui vont avec. Dans le classeur 1, la cellule B2 est a adapter en fonction de l'emplacement du fichier 2 tout en conservant les crochets de chaque côté du nom du classeur (C:\Users\***\Desktop\[Fichier 2.xlsx]).

Lorsque l'on ouvre fichier 2, on obtient 4 en A1 du fichier 1.

Cdlt,

6fichier-1.xlsx (8.51 Ko)
5fichier-2.xlsx (8.17 Ko)

Le problème c'est que ça fonctionne que si le "Fichier 2" est ouvert. Or je veux lire les données de ce fichier sans qu'il soit pour autant ouvert...

Bonjour,

C'est bien ce que j'ai dit précédemment :

Par contre INDIRECT requiert que le classeur source soit ouvert, sinon #REF est renvoyé. Sinon il faudra passer par VBA ou POWER QUERY. C'est pourquoi je déconseille la liaison entre classeur, qui pose souvent plus de problème qu'autre chose.

Une alternative par POWER QUERY avec une table structurée. Vous modifiez le chemin en D2, cliquez droit sur une cellule de la table verte > Actualiser.

En l'état, il est nécessaire dans votre fichier 2 que la feuille soit nommée Feuil1, que la valeur à rechercher se trouve dans la colonne A et la matrice de recherche sur les plages A à C, comme vous l'avez initialement inscrit dans votre formule.

Bon courage.

Cdlt,

4fichier-1.xlsx (18.19 Ko)

C'est étonnant d'être limité, car en mettant le chemin brut dans la formule ceci fonctionne sans avoir a ouvrir le fichier :

=VLOOKUP("MARG";'C:\xxx\[fichier-2.xlsx]Feuil1'!$A:$C;3;FALSE)

Mais pas si on passe par une cellule ou on stock le chemin.

Je ne peux malheureusement pas passer par power query, car le fichier de lecture n'est pas géré par moi ni par VBA, car j'utilise la formule pour 1800 colonnes et sur plusieurs lignes et trop lourd pour ceux qui vont utiliser....

Bonjour,

Il reste toujours la solution brute de coffrage (ne pas oublier les crochets) si pas de POWER QUERY, pas de VBA, alors CTRL + F :

image

Mais je ne pourrais faire plus et proposer d'autres solutions désolé.

Bon courage.

Cdlt,

Je n'y avais pas pensé.

Je vais implémenter ceci à travers une macro dans le style suivant :

Sub ChangementLien()

Cells.Replace What:="LIEN", Replacement:="NOUVEAULIEN", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

Je fermerai le sujet avec une solution ;)

Rechercher des sujets similaires à "gestion liens lecture"