Récupérer lien hypertexte

Bonjour,
Je souhaiterais extraire le lien hypertexte contenu dans un texte d’une cellule.
J’ai bien vu une fonction dans Excel, mais elle me renvoie une erreur dans Calc :slight_smile:

ERREUR DE LIBRE OFFICE
Une erreur de structure de script s’est produite lors de l’exécution du script Standard.Recuplien.Recuplien en Basic.
Message : wrong number of parameters!

Ma macro ::
Function Recuplien(rng As Range)
'Extraire l’URL d’un hyperlien
On Error Resume Next
Recuplien = rng.Hyperlinks(1).Address
If Recuplien = 0 Then Recuplien = “”
End Function

L’appel de la fonction dans ma cellule
=recuplien(D31)

Merci pour l’aide (ou une autre idée !)
Patrice

Je ne vois pas comment cela pourrait marcher :

Range n’est pas un type de donnée en Basic. Où avez-vous été chercher ce code ?

En cherchant “récup* hyperlien cellule calc”, je trouve :
https://forum.openoffice.org/fr/forum/viewtopic.php?t=59565&hilit=calc+hyperlien+cellule+récup*

pas très digeste; mais c’est un début.

encore une fois, l’IA est plutot pertinente :

Convert clickable hyperlink to viewable URL - #3 by PYS

sinon par UDF :

Function Recuplien(cellRef as String)
  cell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellRef)
  if cell.getTextfields.count > 0  then
    Recuplien = cell.getTextfields.getByIndex(0).URL
  else
    Recuplien = ""
  endif
End Function

image

Cela récupère le lien, mais quand “je fais glisser” ma cellule pour passer à la cellule du dessous cela reste en A1 et ne passe pas en en A2, etc.
Sinon c’est exactement çà !
Merci

y aurait bcp de façon de ruser;
la plus simple à glisser =RECUPLIEN( "A" & ROW() )

Trop bien !
Je tournais autour d’une ruse mais je ne l’avais pas !
=RECUPLIEN(“D”&LIGNE())
Merci beaucoup.
Patrice
(PS : je ne sais pas comment clôturer la discussion sur ce forum)

Guide - Comment utiliser le site Ask - The Document Foundation Wiki #Mark_an_answer_as_Solution

Merci encore : Hyperlien - [PatCatNat's]

Bonjour,
Finalement j’ai un problème à l’ouverture de mon fichier : Il ouvre le module et affiche une boîte d’erreur.

Erreur d’exécution BASIC.
Propriété ou méthode non trouvée : CurrentController
Il faut que je ferme la boîte de dialogue autant de fois que la fonction est écrite dans ma feuille, puis les cellule sont vides. Un F9 réactive alors la fonction !
Une idée pour modifier le code et que cela s’ouvre sans message d’erreur ?
Merci par avance.
Patrice

Bonjour,
Finalement j’ai un problème à l’ouverture de mon fichier : Il ouvre le module et affiche une boîte d’erreur.

Il faut que je ferme la boîte de dialogue autant de fois que la fonction est écrite dans ma feuille, puis les cellule sont vides. Un F9 réactive alors la fonction !
Une idée pour modifier le code et que cela s’ouvre sans message d’erreur ?
Merci par avance.
Patrice

le contexte est discuté en long et en large par exemple là : Is there a way to get the current sheet name WITHOUT using "ActiveSheet"?
ou là : Asked before: How can a Calc macro refer to the cell it was called from?


pour lever l’ambiguité sur la feuille où se trouve la formule, on peut expliciter :
=RECUPLIEN(FEUILLE(), "A" & LIGNE())

et le code Basic :

Function Recuplien(sheetNum as Integer, cellRef as String)
  sheet = ThisComponent.sheets.getByIndex(sheetNum-1)   ' skip CurrentController.ActiveSheet
  cell = sheet.getCellRangeByName(cellRef)
 ...