LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

  • Initiateur de la discussion Initiateur de la discussion lperbene
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lperbene

Guest
Bonjour,

J'ai le problème suivant avec la fonction LIEN_HYPERTEXTE :

Dans une cellule quelconque d'excel, je définis LIEN_HYPERTEXTE(lien_fichier;texte_a_afficher)

Je souhaiterais, depuis une macro VB, récupérer "lien_fichier" qui définit ce lien hypertexte. J'ai cherché un peu partout, et je ne trouve que la propriété texte_a_afficher malheureusement

J'ai déjà noté que le fait d'utiliser la formule LIEN_HYPERTEXTE fait que la cellule en question n'est pas comptabilisée dans la collection hyperlinks.

Il doit bien y avoir un moyen de récupérer cette propriéte, enfin j'espère ... (qui est d'ailleurs affichée dans une bulle jaune lorsque l'on passe le curseur sur la cellule)

Merci d'avances
 
Re : LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

Salut,

Un petit exemple:
Code:
Option Explicit

Sub TrouveLienHypertexte()
    Dim Cellule As Range
    Dim LiensTrouves As String
    
    For Each Cellule In ActiveSheet.UsedRange
        If Left(Cellule.Formula, 11) = "=HYPERLINK(" Then
            LiensTrouves = LiensTrouves & vbCrLf & Mid(Cellule.Formula, 13, InStr(14, Cellule.Formula, """") - 13)
        End If
    Next Cellule
    
    If LiensTrouves = "" Then
        MsgBox "Pas de lien hypertexte dans la feuille en cours.", vbOKOnly
    Else
        MsgBox "Liens Hypertexte trouvés : " & LiensTrouves
    End If
End Sub
 
Re : LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

Merci Minick,

Malheureusement (mais j'avais oublié de le préciser !), j'ai plusieurs cellules dans feuille excel dont je souhaite récupérer les liens, et les formules ne sont pas si simple.
J'ai par exemple :
=SI(U5="SDRL";
LIEN_HYPERTEXTE(localisation&"SDRL\"&J5&"\"&B5;B5);
LIEN_HYPERTEXTE(localisation&J5&"\"&B5;B5))
1) cette formule est répétée sur x ligne => le numéro de ligne passe à 2 chiffres par la suite...
2) ce que je souhaite récupérer, c'est donc soit :
- l'évaluation de localisation&"SDRL\"&J5&"\"&B5
- soit l'avaluation de localisation&J5&"\"&B5


Effectivement, ma macros fait une recherche sur l'ensemble des cellules dont Formula contient la string "HYPER", mais par la suite je suins embêté pour traiter l'ensemble des différents cas possibles.

Mon idée était vraiment de récupérer cette valeur dans une propriété de l'objet (puisqu'il affiche ce que je veux quand je passe la souris sur la cellule, celà doit bien exister)

Merci
 
Re : LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

Compliqué cette affaire.
Te serait-il possible de changer tes formules comme ceci:

Code:
=SI(U5="SDRL";        LIEN_HYPERTEXTE(localisation&"SDRL\"&J5&"\"&B5;B5)  ;LIEN_HYPERTEXTE(localisation&J5&"\"&B5;B5))
Par
Code:
=LIEN_HYPERTEXTE(Localisation&SI(U5="SDRL";"SDRL\";"")&J5&"\"&B5;B5)

Ce qui permettrai de faire quelque chose mais il faudra que la formule soit sous cette forme pour conserver
LIEN_HYPERTEXTE(localisation;texte)
 
Re : LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

Merci

Ca serait possible mais vraiment pas idéal, car çà imposerait une forte contrainte pour l'utilisation de ce fichier, qui après sera diffusé à différentes personnes:-(

C'est vraiment ce que je cherche à éviter...
 
Re : LIEN_HYPERTEXTE : récupération de l'adresse du lien sous VB

Re,

Sans changer ta formule, mais toujours avec une structure similaire,
essaie ca:

Code:
Option Explicit

Sub TrouveLienHypertexte()
    Dim Cellule As Range
    Dim LiensTrouves As String
    Dim Decoupe As Variant
    
    For Each Cellule In ActiveSheet.UsedRange
        Decoupe = Split(Cellule.Formula, "HYPERLINK")
                
        If UBound(Decoupe) = 2 Then
            Decoupe(1) = Left(Decoupe(1), Len(Decoupe(1)) - 1)
            Decoupe(1) = Left(Decoupe(1), InStrRev(Decoupe(1), ",") - 1) & "),"
            
            Decoupe(2) = Left(Decoupe(2), InStrRev(Decoupe(2), ",") - 1) & "))"

            LiensTrouves = LiensTrouves & vbCrLf & Application.Evaluate(Join(Decoupe))
        End If
    Next Cellule
    
    If LiensTrouves = "" Then
        MsgBox "Pas de lien hypertexte dans la feuille en cours.", vbOKOnly
    Else
        MsgBox "Liens Hypertexte trouvés : " & LiensTrouves
    End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
13
Affichages
2 K
P
Réponses
15
Affichages
3 K
pedrofabien1986
P
M
Réponses
1
Affichages
6 K
M
Retour