VBA mise à jour d'un lien hypertexte

Résolu
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

6 réponses

  1. De rien...

    Bon courage et bonne continuation

    ;o)
    0
    1. Merci pour ces indications, Polux!

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

      Paul
      0
      1. 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
    2. 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
      1. 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
        1. 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
          1. 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