Rafraichir les liens automatiquement

Bonjour,

Y a-t-il un moyen, peut-être avec une macro, de mettre à jour à tous les 2 mins un classeur qui a des liens à un autre classeur ouvert sur un autre ordinateur.

Je ne parle pas de mettre à jour les liens à une source externe mais bien avec des liens vers un autre classeur.

Merci.

Bonjour,

Et bien ça dépend. Oui dans l'absolu c'est possible, via VBA si vous connaissez le nouveau lien. Si il faut le chercher par contre c'est une autre affaire.

Enfin mon avis personnel est qu'Excel n'est pas trop fait pour le "en temps réel", ça peut vite se casser.

Bonjour,

Oui, je connais le lien vers l'autre classeur.

Quelle pourrait être la macro VBA pour se faire?

Merci beaucoup.

D'accord parfait ce sera plus facile.

2 méthodes : ou bien parcourir la liste des liens directement, mais elle est stockée dans la feuille et non dans les cellules comme on pourait le penser. Donc il faut voir, par exemple si vous connaissez le lien initial (lien1) et le lien final (lien2). On peut faire une boucle du type :

For Each lnk in Worksheets(1).Hyperlinks
  If lnk.Address = link1 Then lnk.Address = link2
Next lnk

Autrement, on peut boucler sur les cellules et récupérer le lien contenu dans la cellule, c'est plus intuitif comme procédé mais le code est un peu plus long.Auquel cas il faut procéder ainsi :

For Each c in Range("A1:A10")
  If c.Hyperlinks(1).Address = link1 Then c.Hyperlinks(1).Address = link2
Next c

Vous vous doutez bien, pour éviter d'avoir une foison de If, il faudrait créer une table de correspondance entre les liens de départ et modifiés, afin de simplifier le code.

Merci.

Voici ma situation avec des exemples:

Classeur 1 avec onglet TEST 1- situé sur C:\Documents\Original.xlsm

Classeur 2 avec onglet TEST 2 (avec des liens au Classeur 1) - situé sur C:\Documents\Final.xlsm

Disons que le Classeur 1 et 2 sont ouverts sur 2 ordinateurs différents.

On fait une modification sur Classeur 1, onglet TEST 1 et on veut voir cette modification sur le Classeur 2, onglet TEST 2.

Comment intégrer ces liens dans la macro décrite dans votre commentaire?

Merci beaucoup.

Ah… Désolé je n'avais vraiment pas compris, vous parlez d'une connexion de données, pas d'hyperliens.

Dans ce cas suivez ces instructions Actualiser une connexion de données externes dans Excel - Support Microsoft § Actualiser automatiquement des données à intervalles réguliers

Bonjour,

Ce n'est pas tout à fait ça que j'ai besoin. Ce qui est décrit dans cette procédure met à jour les données du Classeur 1. Moi j'aimerais mettre à jour les données du Classeur 2 suite au changement du Classeur 1.

J'utilise Excel 365.

Dans le classeur 2, si je clique sur "Workbook Links", je vois le lien au Classeur 1 (ici nommé POPI 2.0)

image image

C'est ce lien que je voudrais mettre à jour régulièrement sans avoir à cliquer sur "Refresh all".

Est-ce que c'est possible?

Merci beaucoup!

Ajoutez ce code dans un module et lancez l'une des macros. Vous pouvez ajouter un appel automatique dans workbook.open.

Sub Renvoi()
    ' MsgBox "Connexion rafraichie !"        
    RefreshMe
End Sub

Sub RefreshMe()
    ThisWorkbook.RefreshAll
    Application.OnTime Now + TimeValue("00:02:00"), "Renvoi"
End Sub

Ça ne fonctionne pas.

Cette macro fait un "Refresh all" des connexions externes et non des liens vers un autre fichier.

C'est comme si je cliquais sur "Refresh all" dans la section "Queries & Connections":

image

Je cherche plutôt à faire un "Refresh all" dans la section "Workbook Links":

image

Est-ce que c'est possible?

Merci énormément pour votre aide!

Bonjour,

Excusez-moi vous avez raison, je n'y connais pas grand chose à ces liens de fichiers car je les évite comme la peste.

D'après l'aide en ligne Workbook.UpdateLink method (Excel) | Microsoft Learn c'est la méthode ci-dessous qu'il faut utiliser.

Sub Renvoi()
    ' MsgBox "Connexion rafraichie !"        
    RefreshMe
End Sub

Sub RefreshMe()
    ThisWorkbook.UpdateLink Name:=ThisWorkbook.LinkSources
    Application.OnTime Now + TimeValue("00:02:00"), "Renvoi"
End Sub

EDIT : corrigé pour correspondre à la solution finale

J'ai un message d'erreur:

image

Et avec ? Comme indiqué dans l'aide

ThisWorkbook.UpdateLink Name:=ThisWorkbook.LinkSources

Oui oui oui!!!

Ça marche!!

Merci tellement, c'est extrêmement apprécié!!!

Je vous en prie, désolé pour le contretemps on a mis un peu de temps à se comprendre.

J'aurais une autre question.

Cette méthode ne semble pas fonctionner en utilisant la caméra.

Si j'utilise l'outil caméra et que je change l'image sur le Classeur 1, elle ne se met pas à jour sur le classeur 2.

Y a-t-il un moyen pour qu'elle se mette à jour aussi ?

Rechercher des sujets similaires à "rafraichir liens automatiquement"