Modification de la cible d'un lien hypertexte par macro
Résolu
MeuhMeuh07
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonsoir à tous,
Je suis actuellement à la recherche d'une macro qui me permettrait de modifier la cible de plusieurs liens hypertextes dans une même feuille excel. Le plus important à savoir est que le texte affiché dans la cellule contenant le lien hypertexte est 1 et non pas le chemin d'accès du fichier. Donc je ne peux pas juste faire un "Find/Replace" si mes connaissances sont bonnes.
J'ai trouvé une macro que je vous mets ci-dessous mais qui modifie seulement le "texte à afficher" et non pas la cible réelle du lien.
Sub HyperLinkChange()
Dim oldtext As String
Dim newtext As String
Dim h As Hyperlink
' These can be any text portion of a hyperlink, such as ".com" or ".org".
oldtext = ""
newtext = ""
' Check all hyperlinks on active sheet.
For Each h In ActiveSheet.Hyperlinks
x = InStr(1, h.Address, oldtext)
If x > 0 Then
If h.TextToDisplay = h.Address Then
h.TextToDisplay = newtext
End If
h.Address = Application.WorksheetFunction. _
Substitute(h.Address, oldtext, newtext)
End If
Next
End Sub
Malheureusement mes connaissances en VBA sont un peu faibles... Est-ce que l'un d'entre vous connaîtrait une macro ou est calé(e) en VBA??
Je suis sur excel 2010 pour info...
Si vous avez des questions n'hésitez pas. J'espère avoir été à peu près clair ^^
Je m'excuse par avance si il y a déjà un topic la dessus, mais j'ai pas trouvé...
Merci par avance à tous
Bonne soirée
Aymeric
Je suis actuellement à la recherche d'une macro qui me permettrait de modifier la cible de plusieurs liens hypertextes dans une même feuille excel. Le plus important à savoir est que le texte affiché dans la cellule contenant le lien hypertexte est 1 et non pas le chemin d'accès du fichier. Donc je ne peux pas juste faire un "Find/Replace" si mes connaissances sont bonnes.
J'ai trouvé une macro que je vous mets ci-dessous mais qui modifie seulement le "texte à afficher" et non pas la cible réelle du lien.
Sub HyperLinkChange()
Dim oldtext As String
Dim newtext As String
Dim h As Hyperlink
' These can be any text portion of a hyperlink, such as ".com" or ".org".
oldtext = ""
newtext = ""
' Check all hyperlinks on active sheet.
For Each h In ActiveSheet.Hyperlinks
x = InStr(1, h.Address, oldtext)
If x > 0 Then
If h.TextToDisplay = h.Address Then
h.TextToDisplay = newtext
End If
h.Address = Application.WorksheetFunction. _
Substitute(h.Address, oldtext, newtext)
End If
Next
End Sub
Malheureusement mes connaissances en VBA sont un peu faibles... Est-ce que l'un d'entre vous connaîtrait une macro ou est calé(e) en VBA??
Je suis sur excel 2010 pour info...
Si vous avez des questions n'hésitez pas. J'espère avoir été à peu près clair ^^
Je m'excuse par avance si il y a déjà un topic la dessus, mais j'ai pas trouvé...
Merci par avance à tous
Bonne soirée
Aymeric
A voir également:
- Excel modifier lien hypertexte en masse
- Modifier liste déroulante excel - Guide
- Modifier dns - Guide
- Renommer des fichiers en masse - Guide
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
1 réponse
Bonjour,
Cette macro ne modifie pas que le texte à afficher, elle modifie aussi le texte de la cible du lien.
Le lien lui même est dans h.Address
le texte est dans h.TextToDisplay
Donc en modifiant légèrement cette macro, voila une version qui doit fonctionner :
Ik suffit de remplacer les valeurs de oldtext et newtext pas les chaines de caractères souhaitées.
Cette macro ne modifie pas que le texte à afficher, elle modifie aussi le texte de la cible du lien.
Le lien lui même est dans h.Address
le texte est dans h.TextToDisplay
Donc en modifiant légèrement cette macro, voila une version qui doit fonctionner :
Sub HyperLinkChange()
Dim oldtext As String
Dim newtext As String
Dim h As Hyperlink
' These can be any text portion of a hyperlink, such as ".com" or ".org".
oldtext = "texte à remplacer dans le lien"
newtext = "texte de remplacement"
' Check all hyperlinks on active sheet.
For Each h In ActiveSheet.Hyperlinks
x = InStr(1, h.Address, oldtext)
If x > 0 Then
h.Address = Application.WorksheetFunction. _
Substitute(h.Address, oldtext, newtext)
End If
Next
End Sub
Ik suffit de remplacer les valeurs de oldtext et newtext pas les chaines de caractères souhaitées.
En mode "debug", lorsque je met le curseur sur x, il vaut 18...
Est-ce que cela peut provenir du fait que le old text et new text sont trop longs?
Merci encore
Je n'arrive pas a reproduire cette erreur.
Par contre, juste une précision :
h.Address contient le chemin vers le document cible.
S'il s'agit d'un lien vers des cellules du classeur lui même, la cible du lien est dans h.SubAddress
Dans ce cas, il faut modifier la macro.
Cdlt
Ok pour toutes ces infos. Les liens font référence à des fichiers PDF dans un dossier.
Quand j'ai raccourci le chemin d'accès à changer, apparemment ça a marché. Peut être que mon ordi n'est pas assez de mémoire pour faire tourner la macro...
En tout cas, je te remercie
Bonne journée
Donc voila une info intéressante : les chemins dans les hyperliens ne peuvent pas faire plus de 255 caractères.
Bonne journée