VBA mise à jour d'un lien hypertexte

Résolu
Tipom Messages postés 4 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

j'ai écris une petit macro qui crée, à partir d'une liste, autant de feuilles que d'items dans la liste. Chacune de ces feuilles est formée sur la base d'une feuille modèle. jusque là, pas de souci.

Je veux aussi que dans la liste de départ soient insérés des liens hypertexte pointant chacun vers la feuille qui se rapporte à l'item.

Pour les besoins de ma macro, je crée à chaque fois une feuille appelée Temp, que je renomme en fin de procédure avec le bon nom. Je crée donc le lien hypertexte pointant vers la feuille Temp. Quand je change le nom de la feuille, le lien n'est plus valide.

Est-il possible de mettre à jour le lien, ou de créer un lien vers une feuille donnée, quelque soit son nom?

Je vous mets ci-dessous le détail de la macro qui correspond à ce problème, et si quelqus'un d'avisé peut jeter un coup d'oeil, je lui en suis très reconnaissant!

....
Sheets("Général").Select
Cells(i, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Temp!A1", TextToDisplay:=Sheets("Général").Cells(i, 1).Value

Sheets("Temp").Name = Sheets("Général").Cells(i, 1).Value
i = i + 1

Merci!

Paul
A voir également:

6 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Juste une petite question.

Pourquoi ne pas renommer la feuille "Temp" avant de créer le lien et mettre le nom de cette feuille dans le lien ?

;o)
0
Tipom Messages postés 4 Statut Membre
 
Bonjour Polux,

parce que dans l'instruction qui insère le lien, je n'arrive pas à faire autrement qu'écrire explicitement le nom de la feuille vers laquelle le lien va pointer... Or comme la macro boucle sur une liste, ce nom change à chaque fois...

Même en essayant un truc du genre Subadress="Whorksheets(j).Cells(1,1)" où j est le numéro de la dernière feuille (à chaque feuille crée, celle-ci est placée à la fin), cela ne parce pas!

Ce doit être un bête problème de confusion nom/adresse de ma part, mais je ne trouve pas...:-(

Paul
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Je vais peut être dire une bétise mais, dans la même procédure tu fais ton lien et ensuite tu renommes ta feuille.

Je ferai plutôt l'inverse, genre :
'.... 
Dim nomSheet As Variant

Sheets("Général").Select 
Cells(i, 1).Select 

nomSheet = Sheets("Général").Cells(i, 1).Value 
Sheets("Temp").Name = nomSheet
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
nomSheet & "!A1", TextToDisplay:=nomSheet

i = i + 1 

0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Je vais peut être dire une bétise mais, dans la même procédure tu fais ton lien et ensuite tu renommes ta feuille.

Je ferai plutôt l'inverse, genre :
'.... 
Dim nomSheet As Variant

Sheets("Général").Select 
Cells(i, 1).Select 

nomSheet = Sheets("Général").Cells(i, 1).Value 
Sheets("Temp").Name = nomSheet
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
nomSheet & "!A1", TextToDisplay:=nomSheet

i = i + 1 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tipom Messages postés 4 Statut Membre
 
Merci pour ces indications, Polux!

...mais ça ne marche toujours pas... toujours le message "référence non valide"...
Grrrr...

Paul
0
Tipom Messages postés 4 Statut Membre
 
Très cher Polux,
ça marche! J'ai ajouté des guillemets:

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'" & nomSheet & "'!A1", TextToDisplay:=nomSheet

et là, ça fonctionne bien! Je ne cherche pas à comprendre (shame on me!), mais j'en m'en satisfait fort!

Merci pour la rapidité de tes réponses et tes conseils avisés!
Paul
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
De rien...

Bon courage et bonne continuation

;o)
0