Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Liens hypertexte / Nouvelle onglet

M.Ben

XLDnaute Junior
Bonjour la communauté,

Je vous contacte car après plusieurs recherches, je n'arrive pas à trouver (ou comprendre) comment arriver à la solution.
Je vous explique, j'ai un UserForm qui me permet de créer des onglets (ça je suis arrivé à le gérer) et pour chaque onglet créée, le nom de l'onglet s'inscrit dans un onglet nommé "Bibliothèque" qui ne change pas.
Mon souhait serait de pouvoir créer un lien hypertexte de cette onglet créer dans ma bibliothèque. Le but est que si je crée beaucoup de feuilles, que je puisse en passant par ma bibliothèque navigué entre mes onglets facilement.

PS: Dans ma bibliothèque j'ai 3 colonnes (1 par type de feuille), ci-dessous l'entête de ma bibliothèque,

Ci-dessous: 1 des 3 code qui me permet de dupliquer 1 onglet masqué et qui ajoute le nom de l'onglet à la bibliothèque:
J'aurai bien voulu vous joindre le fichier pour que cela soit plus claire, mais il est trop volumineux (1 995 Ko) , si vous avez une solution pour que je puisse vous le partager je suis preneur. Ca faciliterai les échange car j'ai peur que mon explication soit trop flou.

Merci d'avance de vos retours.
 
Solution
Correction à apporter à ton code
VB:
MsgBox " Chaîne : " & Me.ComboJeuConnuACreer1 & " créée"
            With Sheets("Bibliothèque")
                Set LienHyp = .Range("B" & .Range("B20").End(xlUp).Row)  'cellule qui aura le lien hypertexte
                .Hyperlinks.Add anchor:=LienHyp, Address:="", SubAddress:=LienHyp.Value & "!A1", TextToDisplay:=LienHyp.Value
                ComboJeuConnuACreer1 = LienHyp.Value 'nom de la feuille cible
            End With

vgendron

XLDnaute Barbatruc
Hello

un bout de code ici pour te montrer la syntaxe à utiliser pour créer un lien hypertexte
il te suffit d'adapter et placer au bon endroit dans ta macro. (au moment où tu enregistre le nom du nouvel onglet dans ta feuille "Bibliothèque"
VB:
Sub Macro1()

    Set Lienhyp = Range("A2") 'cellule qui aura le lien hypertexte
    NomNouvelleFeuille = Lienhyp.Value 'nom de la feuille cible

    ActiveSheet.Hyperlinks.Add Anchor:=Lienhyp, Address:="", SubAddress:=NomNouvelleFeuille & "!A1", TextToDisplay:=NomNouvelleFeuille
End Sub
 

M.Ben

XLDnaute Junior
Merci vgendron, je vais essayer de voir où et comment l'intégrer dans mon code.
Je vous tiendrez informé
 

M.Ben

XLDnaute Junior
Bonjour vgendron,
Alors j'ai essayé de placer le bout de code que tu as donné à différent emplacement dans mon code (au niveau de l'endroit qui s'occupe d'enregistrer le nom de l'onglet dans la bibliothèque) et je n'arrive pas à aboutir.
Le côté positif c'est que ça ne me génère pas d'erreur, le code s'exécute il ne fait pas le liens hypertexte.

Comment je pourrais faire pour transmettre le fichier excel s'il faut ? (un moyen de compresser un classeur?)

Et j'ai une question à quoi correspond le mot "!A1" dans la ligne de codage ?
 

vgendron

XLDnaute Barbatruc
Hello
pour alleger le fichier: suffit de ne garder que quelques lignes de données

pour le A1: il s'agit de la cellule visée sur la feuille par la lien hypertexte==> pour obtenir cette ligne de code, j'ai juste utilisé l'enregistreur de macro
tu dis que le lien hypertexte n'est pas créé: En es tu certain?? ne serait il pas créé sur une autre feuille que tu penses.. celle qui est active au moment de l'éxecution de la macro par exemple?
 

M.Ben

XLDnaute Junior
Alors, pour répondre à ta question, oui j'en suis sûr que le lien n'est pas créé, j'ai regardé dans toutes mes feuilles pour voir et je n'ai rien vu.

J'ai pu enfin joindre mon fichier (Gros régime) c'étaient les images que j'ai mis dans mon UserForme et autre qui gonflaient le volume du fichier.

Ca sera plus parlant, pour pointer ce qui pose problème .
 

Pièces jointes

  • Calculs chaine de cotation - C1.zip
    313.7 KB · Affichages: 4

vgendron

XLDnaute Barbatruc
Correction à apporter à ton code
VB:
MsgBox " Chaîne : " & Me.ComboJeuConnuACreer1 & " créée"
            With Sheets("Bibliothèque")
                Set LienHyp = .Range("B" & .Range("B20").End(xlUp).Row)  'cellule qui aura le lien hypertexte
                .Hyperlinks.Add anchor:=LienHyp, Address:="", SubAddress:=LienHyp.Value & "!A1", TextToDisplay:=LienHyp.Value
                ComboJeuConnuACreer1 = LienHyp.Value 'nom de la feuille cible
            End With
 

M.Ben

XLDnaute Junior
Merci pour ton aide, cela résout mon problème, la fonction With permet d'isoler les lignes pour créer les liens à ma feuille bibliothèque? Ou elle a une fonction particulière?
 

vgendron

XLDnaute Barbatruc
je pense que tu avais plusieurs problèmes

le with permet de travailler sur une feuille SANS avoir besoin de l'activer
MAIS attention à ne pas oublier le point . devant l'objet qu'on souhaite utiliser
exemple
sheets("Biblio").range("A" &range("B20").end(xlup).row)
ici; l'objet range ("Axx") est bien la range de la feuille Biblio, puisque tu précises: sheets("biblio").range("A")

MAIS le range("B20")... est l'objet range("B20") de la feuille ACTIVE !
donc.. si tu es sur une autre feuille que Biblio, tu t'exposes à un résultat hasardeux..
il aurait donc fallu ecrire
sheets("Biblio").range("A" &sheets("biblio").range("B20").end(xlup).row)
l'intérêt du with apparait la encore=> ca "allège" la syntaxe
with sheets("Biblio") ==+> on spécificie bien qu'on travaille sur la feuille
.range("A" & .range("B20").end(xlup).row)
end with
le point devant chaque range spécifie bien la feuille de travail..

ensuite ton autre problème (je pense; pas vérifié)
c'est qu'une fois le set lienHyp effectué (lienHyp est bien un objet range)
tu faisais: ComboJeuConnuACreer1 = LienHyp.Value
et tu réutilisais le combojeuconnuacreer1 dans l'écriture du lien hypertexte==> je pense qu'il y a un souci sur la syntaxe: la où elle attendu un objet range, tu ne mettais que la valeur de l'objet..
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…