Modif. lien hypertexte avec 1 constante + 1 variable

Roukkeus

XLDnaute Nouveau
(Re)Bonjour,

J'avais rencontré un problème ce matin sur le renommage par macro du titre d'un onglet avec un nom constitué d'une variable (une case modifiable par l'utilisateur du fichier) et une constante (un texte qui ne change pas).

Bonjour à tous,

Dans une macro que je suis en train de construire, je cherche à modifier le nom d'une feuille qui se nomme avant macro : "Défaut > bob"

Le nom après macro est constitué de :
- une variable : valeur de la cellule B4 (ex : "super") de ma feuille "Bibi"
- une constante : " > bob"

Donc, au début de ma macro, je suis sur "Bibi" et je définis le paramètre :
Title = Range("B4")

Plus loin, j'essaie de coder le changement de titre :
Sheets("Défaut > bob").Name = (Title) &" > bob"
--> Ce qui (bien entendu) ne fonctionne pas...

Cette opé est-elle possible ? Si oui, comment ?

La réponse était (Pierrot93) :
Code:
Sheets("Défaut > bob").Name = Sheets("bibi").Range("B4").Value & " > bob"

J'ai maintenant le même problème sur les liens hypertexte. Je m'explique :
Sur une autre feuille (mon sommaire en quelque sorte), j'ai une série de blocs image contenant un lien hypertexte vers ces onglets.
Ces onglets ayant changé de nom, le lien n'est plus valide après exécution de la macro...

J'ai essayé le code suivant :
Code:
ActiveSheet.Shapes("AutoShape 2").Select
    Selection.ShapeRange.Item(1).Hyperlink.SubAddress = Sheets("bibi").Range("B4").Value & "' > bob'!A1"

Mais sans succès...

Pouvez-vous m'aider ?

Merci par avance ! (ne serait-ce que pour avoir lu jusqu'au bout :D !)
++
 

Roukkeus

XLDnaute Nouveau
Re : Modif. lien hypertexte avec 1 constante + 1 variable

Bonjour soenda,

Dsl d'avoir laissé traîné cette discussion...

J'ai essayé ta solution mais cela ne fonctionne pas...
En fait la feuille "bibi" n'est pas modifiée. Elle contient, en cellule B4, la "variable" qui sera insérée dans le nouveau nom des deux onglets à modifier.
Ex :
- Constante = " > bob"
- Feuille "bibi" B4 = "super" (l'utilisateur peut inscrire ce qu'il souhaite)
- Feuille "Défaut > bob" devient donc "super > bob"

J'ai passé une bonne partie de la soirée à tester plusieurs solutions :
-> La tienne, en changeant la valeur de SubAdress :
Code:
Selection.ShapeRange.Item(1).Hyperlink.SubAddress = "Feuil4!A1"
'avec et sans guillemets

-> Définir une variable :
Code:
Dim Onglet As String
Onglet = Sheets("bibi").Range("B4").Value & " > bob"
et qu'ensuite j'appelle cette variable pour modifier le lien :
Code:
ActiveSheet.Shapes("AutoShape 2").Select
    Selection.ShapeRange.Item(1).Hyperlink.SubAddress = Onglet
Cela ne fonctionne pas non plus.

-> Impact éventuel du changement de nom du fichier ?
A la fin de ma macro, le fichier est enregistré sous un autre nom.
J'ai essayé de modifier les liens après modif. du nom du fichier, sans succès...

J'ai épuisé toute mes (maigres) ressources...
Est-ce que tu vois quelque chose d'autre ? Ou éventuellement une étape intermédiaire qui me permettrait de définir ces ***:eek:*** de liens ?

Merci !!
++
 

soenda

XLDnaute Accro
Re : Modif. lien hypertexte avec 1 constante + 1 variable

Bonjour le fil, Roukkeus

On peut l'écrire comme ça
Code:
 ... .SubAddress = [COLOR=blue][B]Feuil4.Name[/B][/COLOR] [COLOR=blue][COLOR=black][B]&[/B][/COLOR] [COLOR=red]"[/COLOR]!A1[/COLOR][COLOR=red]"[/COLOR]
A plus
 

Roukkeus

XLDnaute Nouveau
Re : Modif. lien hypertexte avec 1 constante + 1 variable

Bonjour,

Merci Soedna, a priori, le lien est correctement modifié. Quand je passe la souris sur l'objet contenant le lien, il m'affiche bien :
file:///D:\Mes Documents.......\nom-fichier.xls - nom-feuil!A1

En revanche, quand je clique dessus, il m'affiche tjs une msgbox avec "Référence non valide."

Autant quand le chamin du lien n'était pas bon je comprenait, autant là...:confused:

Vois-tu une solution ?

Merci !
 

Roukkeus

XLDnaute Nouveau
Re : Modif. lien hypertexte avec 1 constante + 1 variable

Résolu :D!

ça m'apprendra à vouloir aller trop vite...

J'avais simplement oublié d'ajouter le signe ' avant et après le nom de ma feuille.
Le code complet est donc :
Code:
Dim Onglet As String
Onglet = "[B][COLOR="Blue"]'[/COLOR][/B]" & Sheets("bibi").Range("B4").Value & " > bob[B][COLOR="Blue"]'[/COLOR][/B]"

ActiveSheet.Shapes("AutoShape 2").Select
    Selection.ShapeRange.Item(1).Hyperlink.SubAddress = Onglet

Merci pour tout !
++
 

Discussions similaires

Réponses
5
Affichages
262

Statistiques des forums

Discussions
312 688
Messages
2 090 958
Membres
104 708
dernier inscrit
Mparzival