créer via une macro un lien hypertexte qui renvoie vers un onglet du fichier

vguillot@hotmail.fr

XLDnaute Nouveau
Bonjour,

Je voudrai savoir comment créer via une macro un lien hypertexte pour tous les clients d'une liste qui ont un onglet à leur nom.
Ceux qui n'ont pas d'onglet à leur nom ne doivent pas avoir de lien hypertexte.

Je voudrai également que le lien marche même si l'onglet est masqué.

En pièce jointe j'ai mis le fichier avec des explications plus précises.

Merci d'avance pour votre aide

Vincent
 

Pièces jointes

  • Liens Hypertexte.zip
    292.8 KB · Affichages: 214

pedrag31

XLDnaute Occasionnel
Re : créer via une macro un lien hypertexte qui renvoie vers un onglet du fichier

Bonjour Vincent, Bonjour le forum,

Hmm, ça manque de sueur comme question... Il n'y a même pas de tentative de macro dans ton fichier... :confused:

XLD n'est pas un forum de prestataires VBA, si tu essaies sincèrement d'apprendre a coder tu trouveras toujours des dizaines de personnes pour te conseiller et t'aider dans ton apprentissage...

Un exemple ci-joint.
Attention, le lien est bien crée même si la feuille est masquée, mais le clic sur le lien ne démasquera pas la feuille...

Bonne journée, :)
 

Pièces jointes

  • Liens Hypertexte.xls
    39 KB · Affichages: 502
  • Liens Hypertexte.xls
    39 KB · Affichages: 500
  • Liens Hypertexte.xls
    39 KB · Affichages: 550

vguillot@hotmail.fr

XLDnaute Nouveau
Re : créer via une macro un lien hypertexte qui renvoie vers un onglet du fichier

Bonjour Pedrag!
D'abord merci pour ta réponse hyper rapide.
Effectivement, tu as raison j'aurai dû au moins mettre mon code pour prouver que je m'étais un peu penché sur le sujet.
Je ne suis qu'un débutant en VBA, et ce forum m'aide beaucoup pour progresser. Merci à vous tous.
Le code que j'avais fait et qui ne marchait pas était le suivant :

Sub Lien()
Dim val As Range

For Each val In Range("B:B")
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=val.Value & " !A1"
Next

End Sub

Je savais avoir entre autre un problème dans la sub adresse mais n'arrivait pas à le corriger.
Merci beaucoup pour ton aide.
Vincent
 

vguillot@hotmail.fr

XLDnaute Nouveau
Re : créer via une macro un lien hypertexte qui renvoie vers un onglet du fichier

Pour info, j'ai rajouté du code à ce que m'a donné pedrag pour pouvoir afficher les onglets masqués. C'est pas optimal parce que ça m'affiche tous les onglets d'un coup mais ça marche.
Si un mordu de VBA trouve le code pour que le lien hypertexte puisse ouvrir directement une feuille masquée je suis preneur.
J'ai essayé toute la matinée j'ai pas trouvé. Je désespère pas pour cette aprèm!!! lool
Bonne journée


Sub AjouteDesLiensHyperTexte()

'Boucle sur les clients de la liste
For Each cell In Worksheets("Clients").Range("B3:B" & Worksheets("Clients").[B3].End(xlDown).Row)

'Boucle sur toutes les feuilles du classeur
For Each ws In Worksheets

'test si le texte de la cellule correspond au nom de la feuille
If cell.Value = ws.Name Then

'Ajout du lien hypertexte
Worksheets("Clients").Hyperlinks.Add cell, Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name

On Error Resume Next
Set ws = Sheets(Target.Name)
If Not ws Is Nothing Then
ws.Visible = True
Sh.Visible = False
End If
On Error GoTo 0

End If

Next ws

Next cell

End Sub
 

pedrag31

XLDnaute Occasionnel
Re : créer via une macro un lien hypertexte qui renvoie vers un onglet du fichier

Re,

C'est une bonne idée de rajouter cette fonction. Je vois avec plaisir que tu trouves la solution par toi-même :)

Je te propose une simplification de ton code ci-dessous...

L'objet "ws" est déjà affecté dans le début de la boucle (For Each ws In Worksheets, on parcourt les objet "feuille" un à un) et donc le code "Set ws = Sheets(Target.Name)" n'est pas nécessaire, c'est redondant. VBA sait déjà que "ws" est la feuille en cours de test.
De même, comme on sait que "ws" existe forcément car il fait partie de la collection des feuilles existantes appelée "Worksheets", le test "If Not ws Is Nothing Then" ne devrait pas être nécessaire, on sait que "ws" est bien une feuille.

Code:
Sub AjouteDesLiensHyperTexte()

'Boucle sur les clients de la liste
For Each cell In Worksheets("Clients").Range("B3:B" & Worksheets("Clients").[B3].End(xlDown).Row)

'Boucle sur toutes les feuilles du classeur
For Each ws In Worksheets

'test si le texte de la cellule correspond au nom de la feuille
If cell.Value = ws.Name Then

'Ajout du lien hypertexte
Worksheets("Clients").Hyperlinks.Add cell, Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name

'Force l'affichage de la feuille en Visible
If ws.Visible = False Then ws.Visible = True

End If

Next ws

Next cell

End Sub

A tester.

Il n'est pas possible que le clic sur le lien HyperTexte fasse apparaitre une feuille masquée.
Il faudrait coder une fonction spécifique pour cela. Ta solution me semble la plus judicieuse car simple et directe.

Bonne journée :)
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll