Faire les mises à jour entre fichiers

C

Celeda

Guest
Bonjour,

Je viens de récupérer plusieurs fichiers liés entre eux :

J'ai un fichier excel "B" avec une colonne qui comporte la reference d'un autre fichier "A" excel
Sur cette reference j'ai un lien hyper texte qui me relie directement au fichier "A"
Lorsque je clique sur le lien et que j'ouvre "A" , des informations sont communiquées par lien à certaines cellules de "B"
Je veux que cette mise à jour ne s'effectue que si je clique sur le lien hypertexte.
Je ne veux pas qu'a l'ouverture de "B" excel me pose la question " ce fichier comporte des liaisons vers d'autres fichiers, voulez vous les ouvrir pour faire les mises à jour".

J'ai testé les Edition-Links mais cela ne semble pas fonctionner.
Qu'est que j'oublie de faire ? ou quoi faire d'autre ?
Merci à l'avance
Celeda
 
@

@+Thierry

Guest
Bonjour Celeda,

Ce que tu demandes est un truc qui revient souvent dans les forums, J'ai pas mal cherché... cependant il n'est pas très facile de répondre, car dans ton cas (si j'ai bien compris) tu veux qu' à l'ouverture du fichier :

1) Excel ne pose pas la question "Voulez mettre à jour les liens"
2) Excel ne mette pas à jour les liens.

1) Pour faire disparaitre le message d'avertissement pour les liens cette commande VBA le fait :
Application.AskToUpdateLinks = False

2) Pour ne pas mettre à jour les liens cette commande le fait aussi :
Workbooks.Open "C:\Temp\Test.xls", False

ATTENTION cependant pour "Application.AskToUpdateLinks = False"...
Cette instruction, doit avoir à sa sortie un code de rétablissement : "Application.AskToUpdateLinks = True" car sinon Excel ne demandera plus à faire une mise à jour des liens à l'ouverture de TOUS les classeurs. Il fera la mise à jour des liens SANS DEMANDER. (cette commande VBA équivaut en fait à aller par Excel => Menu / Outils / Options / Edition => Case à cocher "Ask to update automatic links" non cochée.)

La difficulté dans les deux cas, réside dans le fait que ces instructions doivent être lancées avant l'ouverture du fichier "Test.xls" (étant le fichier cible ayant les formules le référeant à un fichier source) Le fait de mettre les codes dans ThisWorkBook Private Sub Workbook_Open() ni fera rien.

Il y a la solution d'utiliser un "Perso.xls" (placé dans le répertoire xlstart) qui te servirait d'interface pour ouvrir les fichiers que tu ne veux pas mettre à jour les lien sans avoir de message... le code serait ceci :

Sub OpenSansMAJLien()
Application.AskToUpdateLinks = False
Workbooks.Open "C:\Temp\Test.xls", False
Application.AskToUpdateLinks = True
End Sub

Une autre soluce un peu tordue serait d'ouvrir ouvrir un fichier bidon, qui lui même lancerait le code ci-dessus par Workbook_Open et qui se refermerait aussi tôt une fois que test.xls serait ouvert...

Mais peut être est-il plus simple de répondre NON au gentil message qui te demande si tu veux une mise à jour...

Bon courage en tout cas...
@+Thierry
 
@

@+Thierry

Guest
C'est re moi,

Juste une précision, si l'on utilise l'ouverture par VBA du classeur test,
la commande asktoupdatelinks s'avère inutile, Excel ne demande rien avec ce code...puisque le paramètre UpdateLinks est sur False.

Sub OpenSansMAJLien()
Workbooks.Open "C:\Temp\Test.xls", False
End Sub

Voili Voilà
@+Thierry
 
C

Celeda

Guest
Bonjour,

Tu as tout compris Thierry. J'avais consulté les pages aussi du forum.
Merci pour les explications et je vais tester toutes les options proposées, même le truc tordu, dans ta réponse car effectivement je veux une solution de facilité et conviviale parce que :

- quand tu dois ouvrir plusieurs fois ce fichier dans la journée et que tu dois travailler dedans et que tu ne veux pas de mise à jour, je suis sure qu'à un moment donné dans le feu de l'action, on va finir par cocher OUI et vlan la cata sera arrivée

- de plus je ne serais pas la seule utilisatrice donc je souhaite éviter à l'autre de faire la cata aussi.

Merci encore.
Celeda
 
@

@+Thierry

Guest
Re: Faire les mises à jour entre fichiers (Celeda Question Ancienne)

Coucou Celeda,

Bonjour Forum (si vous passez encore par là sur un si vieux post...)

Comme c'est amusant, aujourd'hui, j'avais un truc à faire un peu similaire... (En fait totalement l'inverse.... Je dois être sûr que le user réponde OUI à la question "Voulez-vous mettre à Jour les liens"...) Mais j'ai trouvé une solution.. qui peut être applicable pour toi... Je m'explique...

Donc, en fait, j'utilise un fichier "Bidon".Xls qui ne contient rien du tout à part une macro this WorkBook_Open comme cici :
Private Sub Workbook_Open()
Workbooks.Open "G:\Users\Bank\Share\Bank2003.xls", 3
End Sub
C'est ce fichier (Bidon.xls) qui va donc ouvrir le fichier cible (Bank 2003) ayant les formules le référant à des fichiers sources en liens.

Et donc je refile l'adresse à ouvrir (par Shortcut sur le DeskTop, ou barre Office) Sur "G:\Users\Bank\Share\Bidon.xls"

Donc le User ouvre ce fichier qui ouvre l'autre en mettant les liens à jour, sans que le User se rende compte de quoi que ce soit...
Bien sur dans le fichier "Bank2003".xls en macro WorkBook-BeforeClose
je met :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Workbooks("Bank.xls").Close 0
End Sub
(Je fais aussi une gestion d'erreur si on ouvre le fichier "Bank2003.xls" sans passer par le fichier Bidon.xls)

Pour en revenir à TON problème :
Toi tu NE VEUX PAS donc que les liens se fassent... Et sans message...
Donc strictement même principe mais à la place du 3 dans WorkBook.Open tu va mettre un 0... ce qui ne mettra PAS à jour les liens et qui ne posera aucune question au User...

Donc dans ce cas le code à mettre dans ce fichier "Bidon.xls" sera :
Private Sub Workbook_Open()
Workbooks.Open "G:\Users\Bank\Share\Bank2003.xls", 0
End Sub
Le reste devant être identique.

Voilà une solution... (j'ai pensé à toi quand on m'a demandé çà ce matin...)

Bon allez have a nice day
PS je ne sais pas si tu tomberas sur ce vieux fil, si oui dis le... Sinon je te ferai un msg en BAL...

@+Thierry
 
C

Celeda

Guest
Re: Faire les mises à jour entre fichiers (Celeda Question Ancienne)

Salut Thierry,

C'est drole que tu me parles de ce fil car pendant mon absence ce fameux fichier a été encore ouvert en acceptant les liaisons par erreur et le gars est resté planté devant sa machine en attendant que tous les liens se fassent et il m'a ''maudite'' dans toutes les langues : il m'a donc envoyé un message perso_gentil en me demandant si vraiment je ne pouvais pas l'aider pour éviter cela. Donc je récupére tes instructions et je vais essayer de voir comment on s'en tire avec la macro et le fichier bidon. Je teste et je te fais un compte rendu.
Merci à bientôt
Celeda
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008