Mise à jour lien hypertexte vers onglet

Bonjour à tous,

J'ai 4 onglets types avec chacun des boutons qui me permettent de passer d'un onglet à l'autre.

J'ai commencéune macro qui me copie et renomme 4 onglets types en fonction du nom d'un projet. Ça c'est ok.

Cependant, les liens hypertextes ne se mettent pas à jour avec le changement de nom des onglets.

Comment modifier par VBA le lien hypertexte des boutons ?

J'ai tenté l'enregistreur de macro mais ça marche pas.

Merci à vous.

Bonsoir lolo2b82,

Peux-tu envoyer un extrait de ton excel?

L’enregistreur de macro me donne ça :

ActiveSheet.Shapes.Range(Array("Bouton1")).Select
    Selection.ShapeRange.Item(1).Hyperlink.Address = ""

Pour le copier/coller des onglets types :

    Sheets("PROJET").Copy After:=Sheets(Sheets.Count)
    Sheets("PROJET - ETUDE").Copy After:=Sheets(Sheets.Count)
    Sheets("PROJET - MARCHE").Copy After:=Sheets(Sheets.Count)
    Sheets("PROJET - TRAVAUX").Copy After:=Sheets(Sheets.Count)

    Sheets("PROJET (2)").Name = nom
    Sheets("PROJET - ETUDE (2)").Name = nom & " - ETUDE"
    Sheets("PROJET - MARCHE (2)").Name = nom & " - MARCHE"
    Sheets("PROJET - TRAVAUX (2)").Name = nom & " - TRAVAUX"

"nom" étant le nom du nouveau projet.

Merci à vous.

Peux-tu aussi fournir un détail sur la manière dont sont implémentés les liens hypertext?

Bonjour,

Je suis pas sur de bien comprendre mais je vais tenter de répondre qd même

Sur chaque onglet d'un projet j'ai 5 boutons me permettant de naviguer entre les onglets du projet. Les liens sont :

1- Accueil (onglet de démarrage, commun à tous et qui change jamais) -> Nom du bouton : ACCUEIL

2- Tableau de bord (correspond à l'onglet nommé "nom")-> Nom du bouton : TABLEAU DE BORD

3- Etude (correspond à l'onglet nommé "nom - ETUDE")-> Nom du bouton : ETUDE

4- Marché (correspond à l'onglet nommé "nom - MARCHE")-> Nom du bouton : MARCHE

5- Travaux (correspond à l'onglet nommé "nom - TRAVAUX")-> Nom du bouton : TRAVAUX

Lors de la copie des onglets, les bouton ne change pas de nom.

Bonsoir lolo2b82,

Je te propose de remplace ton code par :

Sub copieFeuilles(zNom As String)
    Const cFeuilles = "PROJET;PROJET - ETUDE;PROJET - MARCHE;PROJET - TRAVAUX"
    Dim oSheetIn As Worksheet, oSheetOut As Worksheet, oShapes As Shapes, oShape As Shape
    Dim aFeuilles() As String, i As Integer

    aFeuilles() = Split(cFeuilles, ";")

    For i = 0 To UBound(aFeuilles)
        Set oSheetIn = ThisWorkbook.Sheets(aFeuilles(i))
        oSheetIn.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        Set oSheetOut = ActiveSheet
        oSheetOut.Name = Replace(aFeuilles(i), "PROJET", zNom)

        'On modifie les hyperliens
        Set oShapes = oSheetOut.Shapes
        For Each oShape In oShapes
            oShape.Hyperlink.SubAddress = Replace(oShape.Hyperlink.SubAddress, "PROJET", zNom)
        Next
    Next
End Sub

bonsoir,

j'ai testé ton code dont je comprends pas grand chose pour être honnête. Par contre, je l'ai intégré en faisant un Call copieFeuilles(nom)

nom étant la valeur rentrée dans ma textbox.

La feuille TEST est bien créée, mais après j'ai une erreur.

Merci pour ton aide

Peut être qu'il ne faut modifier les liens qu'une fois tous les feuilles créées ?

Bonsoir lolo,

Tu as bien compris comment activer la création des feuilles pour un nouveau projet.

En dehors des boutons, as-tu d'autres formes ou images qui ne posséderaient pas de lien hyperlink dans les feuilles copiées?

J'ai modifié le code un peu à l'aveuglette...espérant que ça colle mieux :

Sub copieFeuilles(zNom As String)
    Const cFeuilles = "PROJET;PROJET - ETUDE;PROJET - MARCHE;PROJET - TRAVAUX"
    Dim oSheetIn As Worksheet, oSheetOut As Worksheet, oShapes As Shapes, oShape As Shape, oHyperlink As Hyperlink
    Dim aFeuilles() As String, i As Integer

    'On charge dans une table les noms des feuilles à copier
    aFeuilles() = Split(cFeuilles, ";")

    'On copie les feuilles Projet en modifiant le nom
    For i = 0 To UBound(aFeuilles)
        Set oSheetIn = ThisWorkbook.Sheets(aFeuilles(i))
        oSheetIn.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        Set oSheetOut = ActiveSheet
        oSheetOut.Name = Replace(aFeuilles(i), "PROJET", zNom)

        'On modifie les hyperliens
        'On constitue la collection de toutes les formes contenues dans la feuille
        Set oShapes = oSheetOut.Shapes
        'On
        For Each oShape In oShapes
            On Error Resume Next
            Set oHyperlink = oShape.Hyperlink
            On Error GoTo 0
            If Not oHyperlink Is Nothing Then
                oHyperlink.SubAddress = Replace(oHyperlink.SubAddress, "PROJET", zNom)
            End If
        Next
    Next
End Sub

Bonjour Gérard,

ça marche !!! Je te remercie grandement... Je vais me pencher dessus pour essayer de comprendre et apprendre, en espérant coder un jour comme ça...

Merci à toi

J'ai crié victoire trop vite

j'ai un bug au niveau du bouton "TABLEAU DE BORD" lorsque le nom de la feuille comprend un espace le lien ne marche pas.

Je crois avoir compris pourquoi mais je sais pas comment faire...

En fait lorsque le nom de la feuille est composé d'un espace, dans le lien le nom de la feuille est entre deux ' et quand il n'y a pas d'espace il n'y sont pas...

Pour la 1ere feuille, il faudrait rajouter un SI espace ALORS zNom entre ' '

Mais comment intégré ça maintenant

Solution de bricoleur : j'ai rajouté un espace avant et après le nom de la première feuille.

Du coup excel rajoute dans le lien les ' et le fait de replacer PROJET par un nom avec ou sans espace ne change rien.

J'ai un peu honte mais ça marche

Bonjour lolo2b82,

Si tu as besoin encore d'assistance pour résoudre ton pb, envoies-moi le le nom précis de l'onglet qui pose problème.

Bonjour Gérard,

Le problème se situe sur le 1er onglet "PROJET".

Dans le lien hypertexte il y a PROJET!A1 et quand c'est un nom avec espace il y a les ' en plus comme cela 'TEST TEST'!A1. Du coup sans quand PROJET est remplacé par TEST TEST ce qui donne TEST TEST!A1 ça ne fonctionne pas.

Si c'est compliqué laisse tomber, parce que j'ai forcer excel à mettre les ' sur l'onglet PROJET en mettant des espaces avant et après qui servent à rien. Du coup le lien est ' PROJET '!A1 et en remplaçant par un nom avec espace ça marche qd même.

Rechercher des sujets similaires à "mise jour lien hypertexte onglet"