XL 2013 Lien hypertexte dans tableau structuré

M.Ben

XLDnaute Junior
Bonjour la communauté,

Je suis sur un nouveau projet et je bloque sur "la création de lien hypertexte", j'ai fouillé ce qui pouvait être en lien avec le sujet sur la toile et le forum, mais malheureuse sans aboutir dans l'exécution pour mon code.

J'ai écris le code suivant :
Function Création_Hypertexte_New_Onglet(Nom_Onglet, Nom_Lien_Hypertexte As String, Ligne_tab_résultats As Integer)

Dim Tableau_Résultats As ListObject
' Dim Lig_tab_Résultats As ListRow
Set Tableau_Résultats = Sheets("Résultats").ListObjects("Tab_Résultats")

With Tableau_Résultats
.Hyperlinks.Add Anchor:=Tableau_Résultats.DataBodyRange.Cells(Ligne_tab_résultats, 1).Address, Address:="", SubAdress:="'" & Nom_Onglet _
, TextToDisplay:=Nom_Lien_Hypertexte
End With
End Function

Quand je l'exécute, ma routine j'arrête au niveau de la partie qui est sensé me permettre de créer mon lien (erreur 438), et dans mes variables locales dans l'expression "Création_Hypertexte_New_Onglet", en valeur ça me retourne "vide" o_O.

Je vois bien qu'il y a quelque chose que je n'ai pas cerné, mais je n'arrive pas à voir quoi. Pouvez-vous m'aider à y voir plus clair s'il vous plait.

La macro qui exécute la routine en question, ce fait par le bouton "Créer Feuille de marque" de l'onglet "Résultats".

Le sub qui appel la fonction est le module nommé "Bt_Créer_Feuille_Marque" et la fonction est dans le module nommé "A_FONCTIONS_Programme".

J'espère que ma demande est assez explicite et que mon programme ne piquera pas les yeux des plus confirmé 😅.

Merci d'avance pour votre aide.
 

Pièces jointes

  • DFA_1_Blackball.xlsm
    64.4 KB · Affichages: 5
Solution
Salut,
subadress prend 2 "d" ==> SubAddress
VB:
'------------------------------------------------------------------------------------------------------------------------------
'Fonction pour creer lien hypertexte de l'onglet crée
Function Création_Hypertexte_New_Onglet(Nom_Onglet, Nom_Lien_Hypertexte As String, Ligne_tab_résultats As Integer)
        
    With [Tab_Résultats].Parent
        Dim Anchor As Range: Set Anchor = [Tab_Résultats[Nom]].Rows(Ligne_tab_résultats)
        .Hyperlinks.Add _
            Anchor:=Anchor, _
            Address:="", _
            SubAddress:="'" & Nom_Onglet & "'!B4", _
            TextToDisplay:=Nom_Lien_Hypertexte
    End With

End Function

fanch55

XLDnaute Barbatruc
Salut,
subadress prend 2 "d" ==> SubAddress
VB:
'------------------------------------------------------------------------------------------------------------------------------
'Fonction pour creer lien hypertexte de l'onglet crée
Function Création_Hypertexte_New_Onglet(Nom_Onglet, Nom_Lien_Hypertexte As String, Ligne_tab_résultats As Integer)
        
    With [Tab_Résultats].Parent
        Dim Anchor As Range: Set Anchor = [Tab_Résultats[Nom]].Rows(Ligne_tab_résultats)
        .Hyperlinks.Add _
            Anchor:=Anchor, _
            Address:="", _
            SubAddress:="'" & Nom_Onglet & "'!B4", _
            TextToDisplay:=Nom_Lien_Hypertexte
    End With

End Function
 

M.Ben

XLDnaute Junior
Bonjour fanch55,

Je te remercie pour ton retour, je teste ta proposition dans la journée et je te ferai un retour.

Merci je n'avais pas fait attention sur la syntaxe du SubAddress.

Pourrais-tu s'il te plait m'expliquer les lignes suivantes :

Dim Anchor As Range: Set Anchor = [Tab_Résultats[Nom]].Rows(Ligne_tab_résultats)

je ne comprend pas pourquoi il faut faire cette déclaration.

et dans le SubAddress, je ne comprend pas ce terme et pourquoi il faut le mettre :

Encore merci
 

fanch55

XLDnaute Barbatruc
Dim Anchor As Range: Set Anchor = [Tab_Résultats[Nom]].Rows(Ligne_tab_résultats)
En fait, le parseur d'affichage du visual basic est un peu perdu quand il y a des "[" ou "]" dans un appel à des fonctions Excel. Cette déclaration et affectation n'existe que dans un souci de lisibilité du code .
On peut mettre l'origine de l'anchor directement dans le code mais pas glop à lire ...
en déclarant une cellule tampon :en direct
.Hyperlinks.Add _
Anchor:=Anchor, _
Address:="", _
SubAddress:="'" & Nom_Onglet & "'!B4", _
TextToDisplay:=Nom_Lien_Hypertexte

.Hyperlinks.Add _
Anchor:=[Tab_Résultats[Nom]].Rows(Ligne_tab_résultats), Address:= _
"", SubAddress:= _
"'" & Nom_Onglet & "'!B4", TextToDisplay:= _
Nom_Lien_Hypertexte



Un hyperlien pour une feuille pointe toujours vers une cellule de celle-ci.
J'ai mis B4 car c'est la cellule où est prévu le nom, mais tu peux mettre l’adresse d'une autre cellule à ta convenance.
 

Discussions similaires

Statistiques des forums

Discussions
314 714
Messages
2 112 142
Membres
111 439
dernier inscrit
elde87