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

Zorgloub

XLDnaute Nouveau
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.
 

hoerwind

XLDnaute Barbatruc
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.
 

Gorfael

XLDnaute Barbatruc
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+
 

Zorgloub

XLDnaute Nouveau
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.
 

Ubot303

XLDnaute Occasionnel
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

:D

Ou alors j'ai rien compris :confused:
 

Zorgloub

XLDnaute Nouveau
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.
 

Efgé

XLDnaute Barbatruc
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

  • EXEMPLE EXPLORATEUR.zip
    14.5 KB · Affichages: 114
  • EXEMPLE EXPLORATEUR.zip
    14.5 KB · Affichages: 130
  • EXEMPLE EXPLORATEUR.zip
    14.5 KB · Affichages: 128

Zorgloub

XLDnaute Nouveau
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.
 

Zorgloub

XLDnaute Nouveau
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.
 

Zorgloub

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

:confused:
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

  • Année2009.xls
    16 KB · Affichages: 124
  • Année2010.xls
    16 KB · Affichages: 104
  • RECAP.xls
    25 KB · Affichages: 122
  • RECAP.xls
    25 KB · Affichages: 125
  • RECAP.xls
    25 KB · Affichages: 124
Dernière édition:

Ubot303

XLDnaute Occasionnel
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 :p

Edit : F:/EXCEL MACRO TESTS/Année2010.xls -> moche ;)
Essaye "F:\EXCEL MACRO TESTS\Année2010.xls" :D
 

Zorgloub

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm