Mise à jour liaison: nom du fichier source écrit dans une cellule

  • Initiateur de la discussion Initiateur de la discussion Zorgloub
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Zorgloub

XLDnaute Junior
Bonjour à tous les SympGénies de ce Forum,

Un petit problème que je n'arrive pas à solutionner:

Je dispose d'un fichier A, comprenant une cellule C5 qui doit se mettre à jour en allant chercher la valeur de la

cellule D45 de l'onglet BILAN d'un fichier x.

En C5, on trouve donc la formule ='C:\Gestion\[DOSSIERX.xls]BILAN'!$D$45

Je voudrais cependant pouvoir réaliser cette mise à jour (après l'ouverture du fichier A qui m'a demandé si je

désirais faire la mise à jour de la liaison enregistrée par défaut), en indiquant le chemin et le nom du fichier

Source dans la case E5 du fichier A (par clic sur bouton associé à la macro à écrire).

J'écris donc en E5 du Fichier A le nom de la source désirée: c:\Gestion\Année2009.xls ou C:\Gestion\Année2008.xls

... pour (espérer) aller rechercher la valeur dans le fichier voulu.

J'ai donc essayé ce macro-code, mais sans succès:

SOURCE = Range("E5")
ActiveWorkbook.UpdateLink Name:=SOURCE, Type:= xlExcelLinks

Ca va pas non plus si on met la variable entre parenthèses.

Alors que ca marche si on écrit dans le code, la commande:
ActiveWorkbook.UpdateLink Name:="C:/Gestion/Année2009.xls", Type:= xlExcelLinks

Mais le but est d'écrire le nom de la Source dans la case E5 et pas dans la macro !

Je vous remercie déjà pour votre aide.

Z.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Bonjour,

As-tu vraiment besoin d'une macro, alors qu'une formule me semble suffisante ?
=SI(E5="";"";INDIRECT("'C:\Gestion\["&E5&"]BILAN'!$D$45"))

Il faut que le fichier source soit ouvert.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Salut Zorgloub et le forum
Pas trop envie de me creuser la tête quand je vois (je cite ton poste) :
En C5, on trouve donc la formule ='C:\Gestion\[DOSSIERX.xls]BILAN'!$D$45
....
J'écris donc en E5 du Fichier A le nom de la source désirée: c:\Gestion\Année2009.xls ou C:\Gestion\Année2008.xls
et
Alors que ca marche si on écrit dans le code, la commande:
ActiveWorkbook.UpdateLink Name:="C:/Gestion/Année2009.xls", Type:= xlExcelLinks
\o/
A+
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Bonjour, merci pour ta réponse.

mais ...

La macro permettrait de lancer cette mise à jour quand on en a besoin (clic) et surtout, elle s'effecturerait sans devoir ouvrir le fichier cible avec la commande updateLink ...

Z.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Bonjour,

Mets dans la cellule E5 : "C:/Gestion/Année2009.xls"

ActiveWorkbook.UpdateLink Name:=cells(5,5).value , Type:= xlExcelLinks

😀

Ou alors j'ai rien compris 😕
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Bonjour GoerFael.

j'écris aussi, juste à la fin: "Mais le but est d'écrire le nom de la Source dans la case E5 et pas dans la macro !"

il s'agit d'un fichier à mettre dans les mains d'un utilisateur qui ne sait et ne doit pas aller farfouiller dans les macros ... 😉

Z.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Bonjour Zorgloub, Gorfael, Re Ubot303, Salut hoerwind,
Zorgloub, tout ceci me parait confus, mais comme le fil est "collégial" je me permet de proposer mon exemple d'explorateur qui inscrit le chemin dans une cellule et le nom du fichier dans une autre.
Si ça peut rendre service...
Cordialement
 

Pièces jointes

Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Hello Ubot303,

Mais si ... tu as tout compris 🙂

Cette solution fonctionne. Tu cites directement les coordonnées de la case E5, plutôt que de passer par une variable Cible.
C'est tout bon ca !

Ca a même l'air de fonctionner sans placer les guillemets aux extrémités !

Merci.

Z.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

🙁
Aïe, Ubot303, ne crions pas victoire trop vite.

Je constate que la macro ne plante pas le debugger mais ... la mise à jour ne se fait pas non plus !!!

Peut-être est-ce du au fait que la formule écrite en C5 'C:\Gestion\[DOSSIERX.xls]BILAN'!$D$45 est "prioritaire" sur l'ordre de liaison écrite dans la macro ???

Bref, ca solutionne par le pb...

Z.
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

😕
En fait, le debugger ne plante pas (et ne remet pas à jour) si la case où on écrit le nom du fichier cible est vide !
Sinon, on obtient le message:
Run Time Error 1004
Method 'UpdateLink'of objet'_workbook' failed

Z.
 

Pièces jointes

Dernière édition:
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Chez moi ca marche : j'ai mis Z:\Année2009.xls
Le truc c'est que même si je modifie le fichier source, que je le referme et que j'ouvre la recap, tout se met à jour sans même appuyer sur le bouton 😛

Edit : F:/EXCEL MACRO TESTS/Année2010.xls -> moche 😉
Essaye "F:\EXCEL MACRO TESTS\Année2010.xls" 😀
 
Re : Mise à jour liaison: nom du fichier source écrit dans une cellule

Hello Ubot303,
Par défaut, le fichier RECAP demande une mise à jour par le fichier Année2009 (voir fichiers joints).
il faut bien mettre une formule dans cette case à mettre à jour !

Il est donc normal que la mise à jour fonctionne avec l'année 2009.

Mais une fois le fichier RECAP ouvert, tape le chemin du fichier 2010 (en E5) avec lequel il faut faire la nouvelle mise à jour. Là, le message d'erreur survient et la mise à jour 2010 ne se fait pas par la macro qui se plante!

J'essaie avec une fonction Indirect en E5
Indirect (E7)
avec E7 = 'F\EXCEL MACRO TESTS\[Année2010.xls]BILAN'!$D$45
mais ca va pas non plus ... 🙁

Z.

Z.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour