Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

création d'hyperliens

10 réponses
Avatar
Sunburn
Bonjour,

j'ai une feuille dans laquelle j'ai pas mal d'hyperliens (voir ci-joint
selon macro de http://boisgontierjacques.free.fr/)
http://cjoint.com/?bmmWmS251y
Je voudrais, à chaque fois que je vais sur ma feuille GA02, ma liste de
liens se remette dans les bonnes cases.
Je m'explique. j'ai une macro qui efface toutes mes cellules non
verouillées, dont mes liens font partis. et donc je voudrais les remettre
après effacement.

Merci de votre aide.

YANN

10 réponses

Avatar
JB
Bonjour,

http://boisgontierjacques.free.fr/fichiers/jb-SommaireHyperLien.xls

JB

On 12 jan, 12:08, Sunburn wrote:
Bonjour,

j'ai une feuille dans laquelle j'ai pas mal d'hyperliens (voir ci-joint
selon macro dehttp://boisgontierjacques.free.fr/)http://cjoint.com/?bmmWm S251y
Je voudrais, à chaque fois que je vais sur ma feuille GA02, ma liste de
liens se remette dans les bonnes cases.
Je m'explique. j'ai une macro qui efface toutes mes cellules non
verouillées, dont mes liens font partis. et donc je voudrais les remett re
après effacement.

Merci de votre aide.

YANN


Avatar
FFO
Salut à toi

Je suppose que les cellules de la colonne C porte les adresses des liens et
celles de la colonne D l'identification des cellules qui doivent avoir ces
liens

Dans cet esprit je te propose ce code à mettre dans le VBA de la feuille
"GA02" :

Private Sub Worksheet_Activate()
For Each c In Worksheets("GA02").Range("D2", "D" &
Sheets("GA02").Range("D65535").End(xlUp).Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range(c), Address:="", SubAddress:= _
"" & Range("C" & c.Row) & "", TextToDisplay:="" & Range("C" & c.Row)
& ""
Next
End Sub

Ce code mets tous les liens des cellules identifiées colonne C aux cellules
identifiées colonne D


Espérant avoir répondu à ton attente
Dis moi !!!!
Avatar
Sunburn
Re,
en fait, ma liste de mes liens a été obtenue de cette façon là :
---
Sub ListeLiensClasseur()
On Error Resume Next
Application.DisplayAlerts = False
Sheets("temp").Delete
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "temp"
I = 2
For Each s In ActiveWorkbook.Sheets
For Each H In s.Hyperlinks
ActiveSheet.Cells(I, 1) = H.TextToDisplay
ActiveSheet.Cells(I, 2) = H.Address
ActiveSheet.Cells(I, 3) = H.SubAddress
ActiveSheet.Cells(I, 4) = H.Parent.Address
ActiveSheet.Cells(I, 5) = s.Name
I = I + 1
Next H
Next s
Cells.EntireColumn.AutoFit
End Sub
----
mais je voudrais ne pas utiliser un onglet comme base de ma génration de
liens.
Je cherche plutot quelquechose ou je nomme les cellules dans lesquelles il y
a le lien, avec le lien réel.
genre [onglet GA02 cellule A12] = lien [onglet 10.21]
...
tu vois ce que je veux dire ?
Merci.
YANN

"FFO" a écrit :

Salut à toi

Je suppose que les cellules de la colonne C porte les adresses des liens et
celles de la colonne D l'identification des cellules qui doivent avoir ces
liens

Dans cet esprit je te propose ce code à mettre dans le VBA de la feuille
"GA02" :

Private Sub Worksheet_Activate()
For Each c In Worksheets("GA02").Range("D2", "D" &
Sheets("GA02").Range("D65535").End(xlUp).Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range(c), Address:="", SubAddress:= _
"" & Range("C" & c.Row) & "", TextToDisplay:="" & Range("C" & c.Row)
& ""
Next
End Sub

Ce code mets tous les liens des cellules identifiées colonne C aux cellules
identifiées colonne D


Espérant avoir répondu à ton attente
Dis moi !!!!



Avatar
FFO
Rebonjour à toi

Il faut bien une liste quelque part qui donne le paramétrage des liens
A moins que tu puisses fournir une suite logique pour les obtenir
Mon code c'est basé sur les données dans l'onglet "temp"
Si il n'existe pas comment les obtenir ????

merci pour tes précisions
Avatar
Sunburn
Rebonjour,
et bien, j'ai 29 liens dans cette feuille GA02.
je pensais qu'on pouvait les énumérer, c'est-a-dire ecrire que :
en [GA02].cellule H80, on a un lien qui a le texte "10.31" et qui pointe
vers l'onglet '10_31'
ensuite en ......., et en fait, 29 lignes comme ça avec chaque lien, car en
effet, il n'y a pas de suite logique.

Sinon, je peux définir les liens sur un onglet, par exemple disons en
"GA02", à partir de [K1], qui seront des cellules verouillées (ça pose pas de
probleme ?)
Merci à toi.
YANN
"FFO" a écrit :

Rebonjour à toi

Il faut bien une liste quelque part qui donne le paramétrage des liens
A moins que tu puisses fournir une suite logique pour les obtenir
Mon code c'est basé sur les données dans l'onglet "temp"
Si il n'existe pas comment les obtenir ????

merci pour tes précisions



Avatar
FFO
Rebonjours à toi

Quand tu dis les énumérer qu'entends tu par là ??? (où et comment)
Sinon à l'instar du fichier "temp" que tu nous as fourni si tu listes les
données dans un Onglet où bon te semble mon code fonctionnera il faut juste
l'adapter à la plage que tu utiliseras :

Private Sub Worksheet_Activate()
For Each c In Worksheets("GA02").Range("D2", "D" &
Sheets("GA02").Range("D65535").End(xlUp).Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range(c), Address:="", SubAddress:= _
"" & Range("C" & c.Row) & "", TextToDisplay:="" & Range("C" & c.Row)
& ""
Next
End Sub

Ici Onglet "GA02" colonne C les adresses des liens colonne D les cellules
portant les liens

Tiens moi informé
Avatar
Sunburn
D'ac,
ça me conviens pas mal, sauf les noms des liens.
je voudrais comme nom "10.31", "10.71", ....
quoi rajouter ??
Merci.
Yann

"FFO" a écrit :

Rebonjours à toi

Quand tu dis les énumérer qu'entends tu par là ??? (où et comment)
Sinon à l'instar du fichier "temp" que tu nous as fourni si tu listes les
données dans un Onglet où bon te semble mon code fonctionnera il faut juste
l'adapter à la plage que tu utiliseras :

Private Sub Worksheet_Activate()
For Each c In Worksheets("GA02").Range("D2", "D" &
Sheets("GA02").Range("D65535").End(xlUp).Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range(c), Address:="", SubAddress:= _
"" & Range("C" & c.Row) & "", TextToDisplay:="" & Range("C" & c.Row)
& ""
Next
End Sub

Ici Onglet "GA02" colonne C les adresses des liens colonne D les cellules
portant les liens

Tiens moi informé



Avatar
Sunburn
rebonjour,
de plus, il me met "référence non valide", mais il m'affiche l'onglet voulu.
pourquoi ce message.

Voici tout mon code.
merci.
YANN
----
'pour forcer les liens de GA02
Private Sub Worksheet_Activate()
For Each C In Worksheets("GA02").Range("L1", "L" & _
Sheets("GA02").Range("L65535").End(xlUp).Row)
ActiveSheet.Hyperlinks.Add Anchor:=Range(C), Address:="", SubAddress:= _
"" & Range("K" & C.Row) & "", TextToDisplay:="" & Range("K" & C.Row) & ""
Next
End Sub

'pour faire marcher les liens hypertexte, même si l'onglet n'est pas visible
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
ActiveWorkbook.Unprotect 'deproteger le classeur
Dim H As Hyperlink
For Each H In Worksheets("GA02").Hyperlinks
If H.Range.Address = Target.Range.Address Then
X = Left(H.SubAddress, Application.Find("!", H.SubAddress) - 1)
y = Right(H.SubAddress, Len(H.SubAddress) - Application.Find("!",
H.SubAddress))
X = Application.Substitute(X, "'", "")
Sheets(X).Visible = True
'Application.GoTo Sheets(x).Range(y)
Sheets(X).Activate
Exit Sub
End If
Next
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur
End Sub
-----
Avatar
FFO
Rebonjour à toi
quels sont les paramètres de celui dont la référence est non valide (nom de
l'onglet de destination) ????

Merci pour la précision

Pour les noms des liens si tu les souhaites différents des liens proprement
dit il faut rajouter une cellule supplémendaire dans une colonne dans
laquelle tu mets les noms pour chaque lien et tu enrichis cette partie du
code :

TextToDisplay:=""

ainsi

TextToDisplay:= Range("E" & C.Row)

pour la colonne E

Donnes moi des nouvelles !!!!
Avatar
Sunburn
impec, j'ai modifié textodisplay, car les noms voulus ne sont pas ceux des
onglets.
merci beaucoup.
YANN

"FFO" a écrit :

Rebonjour à toi
quels sont les paramètres de celui dont la référence est non valide (nom de
l'onglet de destination) ????

Merci pour la précision

Pour les noms des liens si tu les souhaites différents des liens proprement
dit il faut rajouter une cellule supplémendaire dans une colonne dans
laquelle tu mets les noms pour chaque lien et tu enrichis cette partie du
code :

TextToDisplay:=""

ainsi

TextToDisplay:= Range("E" & C.Row)

pour la colonne E

Donnes moi des nouvelles !!!!