[Résolu][Calc] mise à jour des liens externes par un bouton

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

[Résolu][Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Bonjour à tous,
J'ai débuté avec les classeurs Calc il y a 2 ans, petit à petit j'y arrive et j'ai souvent trouvé des réponses en fouillant dans ce forum, merci à tous.

Par contre là, j'ai l'impression que la seule réponse à mon problème se trouve dans une macro, autrement dit pour moi en chinois.

J'aimerais arriver à écrire une macro qui fait la chose suivante ou son équivalent : "menu Edition" -> "Liens vers les fichiers externes" -> selectionner tous les liens -> "Actualiser"
Pourquoi cela ? : Parceque mes liens vers des pages web s'actualisent bien automatiquement mais lorsque je ferme le capot du portable avec le fichier ouvert à la réouverture et à la sortie de la veille tous les liens sont "morts" et je dois attendre 5 minutes (temps paramétré pour l'actualisation automatique des liens) ou fermer le classeur, le ré-ouvrir et "Autoriser la mise à jour" pour que tout rentre dans l'ordre.
Je sais, je n'ai qu'à diminuer le temps de mise à jour automatique, mais voilà si je fais cela le tableur est trop souvent bloqué pendant mon travail, 5 minutes est le minimum confortable pour son exploitation.

Précisions :
- "F9" ou "Ctrl+Maj+F9" sont sans effet, ca rafraichie la page mais pas les liens vers les fichiers externes.
- J'ai essayé de passer par l'enregistreur de macro mais ca n'enregistre absolument pas mes actions.
- Je ne vous demande pas d'écrire pour moi ce code (quoi que ;) mais de m'indiquer les ressources pour que j'essaye d'écrire cela.
- Je précise que j'ai fouillé sur le forum et n'ai trouvé qu'un seul post correspondant mais le fil fini en "queue de poisson"

Bon WE à tous
Dernière modification par Tournesol33 le 22 déc. 2025 14:24, modifié 3 fois.
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10046
Inscription : 28 août 2010 08:45

Re: [Calc] mise à jour des liens externes par un bouton

Message par micmac »

Bonjour,
Dans votre signature il y a écrit : LibreOffice 24.2.5.2
Afin de profiter des dernières améliorations, pensez à être à jour de la dernière version stable officielle
Pourquoi ? Entre autres choses parce que... Multiples vulnérabilités dans LibreOffice versions antérieures à 24.8.4. source CERT-FR
Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] mise à jour des liens externes par un bouton

Message par luky-luke »

Bonjour,
Un exemple pour rafraichir les liens DDE d'un classeur.

Code : Tout sélectionner

Sub RafraichirLien
Dim MonFichier As Object, Links As Object
Dim i As Integer
MonFichier = ThisComponent
'xray MonFichier
Links() = MonFichier.DDELinks ' .SheetLinks ou .AreaLinks
For i = 0 to Links.count -1
	UnLiens =Links(n)
	UnLiens.refresh
Next i
End Sub
Il y a trois propriétés pour les liens DDELinks pour les liens DDE, SheetLinks pour les feuilles liées, AreaLinks pour les zones liées.
Dans ton cas, s'il y a plusieurs types de liens, récopie la boucle dans la même sub en changeant la propriété ou lister les liens dans un sub et appeler la boucle dans une sous-routine (sub).
Cordialement
Luke
Dernière modification par luky-luke le 15 déc. 2025 12:13, modifié 1 fois.
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Bonjour @luky-luke
Merci pour ta réponse.
Bon je ne comprends rien à tes précisions mais c'est normal vu mon niveau 0, mais en bossant ca va peut-être rentrer.
En attendant, je vais essayer dans la semaine de tester le code que tu m'as indiqué et je reviendrais sur le forum pour dire comment ca se passe.

Juste une précision dans ton code "MonDossier" doit j'imagine être remplacé par le nom de mon dossier en l'occurence "Progression 2025" ?
LibreOffice 25.8.32.2 .... Windows11
Jeff
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10005
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc] mise à jour des liens externes par un bouton

Message par Jeff »

Bonjour,
Tournesol33 a écrit : 15 déc. 2025 08:02 dans ton code "MonDossier" doit j'imagine être remplacé par le nom de mon dossier
Y'a pas de "MonDossier"... En revanche il y a "MonFichier", qui est déjà renseigné comme étant le fichier actuel :

Code : Tout sélectionner

MonFichier = ThisComponent
A +
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.16 / Debian 13 "Trixie" / Xfce
AOO 4.1.15 / Debian 11 "Bullseye" / Cinnamon
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] mise à jour des liens externes par un bouton

Message par luky-luke »

Bonjour,
J'ai été un peu rapide hier, entre le poulet qui couvait dans le four et les patates qui sautaient dans la poêle.
La macro proposé fonctionne pour n'importe quel fichier, il suffit de la copier dans ton fichier, suivre le tutoriel :
Importer une macro d'un fichier exemple ; lanceurs
Et en plus, j'ai fait une faute d'orthographe que je viens de corriger.

Pour rafraichir tous les liens présents dans un classeur et illustrer mon message.
lister les liens dans un sub et appeler la boucle dans une sous-routine
Un exemple

Code : Tout sélectionner

Sub LesLiens
Dim MonFichier As Object
MonFichier = ThisComponent
RafraichirLien(MonFichier.DDELinks)
RafraichirLien(MonFichier.SheetLinks)
RafraichirLien(MonFichier.AreaLinks)
MsgBox("Tous les liens ont été mis à jour")
End sub

Sub RafraichirLien(Links As Object)
Dim i As Integer
For i = 0 to Links.count -1
	UnLiens = Links(n)
	UnLiens.refresh
Next i
End Sub
Cordialement,
Luke
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Hello @luke

Merci pour tout ce travail supplémentaire. Je n'ai pas eu le temps de tester, je te tiens au courant.
J'espère qu'il n'a pas cramé le poulet :D
A bientôt
Cordialement
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

SUPER ! ca marche nickel :bravo:

Du coup, j'ai crée un bouton et je suis en train de tester l'annulation de la mise à jour automatique afin de ne passer que par ce bouton ca évite les petits ralentissements lors des mises à jour automatiques. Comme je ne suis pas en permanence sur le fichier mais que j'ai besoin d'une mise à jour au moment où je le consulte ca va suremment être beaucoup mieux.

Et cerise sur le gâteau, j'ai trouvé la solution, comme un grand, pour éviter d'avoir le gros bandeau jaune à l'ouverture du fichier qui indique que les macros ne seront pas actives pour des raisons de sécurité etc. A savoir en ajoutant dans "outils" -> "options" -> "sécurité" -> "sécurités des macros" -> "sources de confiance" -> "emplacements de fichiers de confiance" ->"ajouter" -> et selection du dossier dans lequel se trouve le classeur.
De plus, le fait d'avoir ajouté cet emplacement de confiance à règler un truc qui me genait depuis longtemps, à savoir, le bandeau à l'ouverture du classeur qui demandait d'activer les liens externes. J'avais cherché sur le forum comment résoudre cela et n'avait pas trouvé à l'époque.

Merci encore Luke ... pour le coup c'est moi qui suis "LUKY" :D

je passe en résolu
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Bon ben non, en fait ca ne marche pas, je me suis réjoui trop vite.

En fait, le code se déroule bien, jusqu'à la message box, on voit même en bas de la feuille de classeur une barre rapide se déplacer de gauche à droite pour chaque lien mis à jour (je ne sais comment décrire ce visuel, très rapide) mais les données ne changent pas.

Je ne m'en suis pas tout de suite rendu compte car au moment de mon essai les données sources bougeaient peu et voyant "l'effet visuel" décris ci-dessus et la msgbox j'ai eu l'impression que ca marchait. Mais quand, j'ai arrêté la mise à jour automatique temporisée par les propriétés des liens au profit du bouton manuel envoyant le code de Luky Luke j'ai bien vu que les données ne changeaient pas.

Je suppose que c'est moi qui ne fait pas la bonne manip pour intégrer le code de @luky-luke malgré le tuto qu'il a mis en rappel dans son post

Pour @micmac msg ci-dessous: si je me suis répondu à moi même et n'ai pas fait une modif du msg mais plutôt un nouveau message, c'est parce qu'il ne s'agissait pas dune "modification" mais d'un nouveau message carrément opposé dans sa teneur au précédent qui cloturait le sujet.
Je trouvais que pour réouvrir le sujet cela me semblait plus opportun comme méthode
Dernière modification par Tournesol33 le 20 déc. 2025 09:39, modifié 3 fois.
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10046
Inscription : 28 août 2010 08:45

Re: [Calc] mise à jour des liens externes par un bouton

Message par micmac »

Bonjour,

Lorsque votre message n'est pas suivi d'une réponse, merci de ne pas poster plusieurs messages à la suite. Vous disposez d'un bouton Modifier le message Image en haut à droite de chaque message et d'un autre bouton ajoutImage si vous désirez ajouter un complément.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] mise à jour des liens externes par un bouton

Message par luky-luke »

Bonjour,
Dans ton premier message, tu mentionnes des liens vers des pages web ( :?: ).
Il faudrait plus d'information pour comprendre quel type de liens doivent être actualisés ? Un exemple à fournir ?
Un fil de message qui traite d'actualisation de liens entre classeur :
[Résolu] [Calc] Rafraîchissement des liens à distance

Cordialement,
Luke
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Bonjour,
Dimanche pluvieux, on est mieux au coin de la cheminée avec le portable sur les genoux :)

Comme je le disais dans mon 1er post la source est web.
Je viens de préparer un classeur exemple comme tu le suggère Luke, je vérifie demain matin comment il fonctionne car au moment où j'écris ces lignes la source est figée jusqu'à demain matin donc aucun moyen de savoir si le classeur exemple que je vais poster malfonctionne bien comme mon fichier de travail.
Je le poste demain

Bonne fin de WE
Cordialement
.
 Ajout : lundi 22/12
pour ne pas fâché les modos j'update ce post et ne créé pas un nouveau, j'espère que Luke verra qu'il est updaté.
Le fichier exemple est ajouté et j'ai verifié ce matin les données ne sont pas mises à jours par la macro 
Dernière modification par Tournesol33 le 22 déc. 2025 14:26, modifié 3 fois.
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] mise à jour des liens externes par un bouton

Message par luky-luke »

Bonjour,
La propriété .AreaLinks voit bien les deux zones déclarées en liens, mais la mise à jour ne se fait pas.
Dans mon précédent message. J'ai oublié de mentionner la propriété :

Code : Tout sélectionner

ThisComponent.ExternalDocLinks
mais elle ne voit aucun liens, donc pas de mise à jour
A priori, la mise de jour de liens extérieurs (page web) ne semble pas possible par macro et n'est pas implémentée dans l'API. Ce que confirme ce message sur le forum anglais de B.Marcelly qui date de 2012 et aucune amélioration depuis.
Update ExternalDocLinks with a macro

Cordialement,
Luke
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

Bizarre que cela ne soit pas implémenté depuis 13 ans !
Pourtant, si j'ai bien compris ce que j'ai lu quelque part, les boites de dialog avec leurs options et leurs boutons d'execution sont des boites d'executions de macros.
Or il y a bien une boite de dialogue à menu -> Edition -> Liens vers les fichiers externes... -> Actualiser : derrière se bouton actualiser se cache bien une macro, non ?
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12812
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc] mise à jour des liens externes par un bouton

Message par Bidouille »

Bonjour,

J'attire votre attention sur le fait que vous enfreignez les règles du site dont vous utilisez les données :
https://fr.tradingview.com/policies/

Je vous invite à utiliser une autre plateforme autorisant l'usage de ses informations dans un outil tiers si vous devez publier de nouveaux exemples.
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] mise à jour des liens externes par un bouton

Message par luky-luke »

Bonjour,
Tournesol33 a écrit : 22 déc. 2025 13:18 si j'ai bien compris ce que j'ai lu quelque part, les boites de dialog avec leurs options et leurs boutons d'execution sont des boites d'executions de macros.
Non, les boites de dialogues n'exécutent pas des macros, mais des routines internes au logiciel. Ces mêmes routines ne sont pas toujours accessible par macro ou par le dispatcher.
luky-luke a écrit : 22 déc. 2025 10:49 la mise de jour de liens extérieurs (page web) ne semble pas possible par macro et n'est pas implémentée dans l'API.
Bidouille a écrit : 22 déc. 2025 13:24 J'attire votre attention sur le fait que vous enfreignez les règles du site dont vous utilisez les données :
Je n'avais pas suivi les liens du classeur en pièce jointe dans un message précedent. Après visite du site, je vois qu'il y a une application de bureau disponible en téléchargement. Cette application de bureau ne vous convient pas ?
Pour moi le sujet est clos.
Merci de baliser votre message Image[Résolu]

Cordialement,
Luke
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Tournesol33
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 21 sept. 2024 14:36
Localisation : Région Bordeaux

Re: [Calc] mise à jour des liens externes par un bouton

Message par Tournesol33 »

@Luke : merci en tout cas pour ton aide
@Bidouille : je ne savais pas
LibreOffice 25.8.32.2 .... Windows11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26177
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] mise à jour des liens externes par un bouton

Message par Dude »

Salut,
Tournesol33 a écrit : 22 déc. 2025 13:18 Bizarre que cela ne soit pas implémenté depuis 13 ans !
Parce que si personne n'en fait la demande, les développeurs ne feront rien de plus.
Comment réclamer une amélioration en ouvrant un rapport.


Un contournement simple est de supprimer puis recréer le lien.
Voir un exemple ici : viewtopic.php?hilit=calc+import+html+fe ... 92#p278692