Modification de lien hypertexte

maxou

XLDnaute Nouveau
Bonjour a tous,

J'aimerai modifié plusieurs centaine de lien hyper texte en une fois.
mes recherches sur le forum m'ont amené a trouver plusieurs macros:

Sub ModifierLien()
Dim h As Hyperlink
For Each h In ActiveSheet.Hyperlinks
h.Address = "G" & Mid(h.Address, 2)
Next
End Sub

ou

Sub ChangeHyperlinks()
Dim h As Hyperlink, ad$, txt$
For Each h In ActiveSheet.Columns("B").Hyperlinks
ad = h.Address
txt = h.Parent.Offset(, -1) & "\"
If txt Like "Test*" Then
ad = Replace(ad, "AncienDossier", "Test")
ad = Replace(ad, "Demos\", txt)
ElseIf txt Like "Docu*" Then
ad = Replace(ad, "AncienDossier", "Docu")
ad = Replace(ad, "Doc\", txt)
End If
h.Parent.Hyperlinks.Add h.Parent, ad
Next
End Sub

actuellement j'ai un lien du type:
\\Srvdc1\commun\HOT LINE\demande intervention
et j'aimerai :
\\192.1.1.9\HOT LINE\demande intervention.

Pouvez m'aidez svp?
Merci
 

Roland_M

XLDnaute Barbatruc
Bonjour,

si toutefois il s'agit de changer l'adresse complète voir:

Code:
Sub ModifierLien()
Dim h As Hyperlink, AdresOld$, AdresNew$
AdresOld$ = "\\Srvdc1\commun\HOT LINE\demande intervention"
AdresNew$ = "\\192.1.1.9\HOT LINE\demande intervention"
For Each h In ActiveSheet.Hyperlinks
If h.Address = AdresOld$ Then
    h.Address = AdresNew$
    h.TextToDisplay = AdresNew$
End If
Next
End Sub
 

maxou

XLDnaute Nouveau
Bonjour Roland,

Merci pour ta réponse, cela me fait réaliser que ma demande n'est pas assez précise, on nous demande de déplacer des dossiers contenants des liens,
sur le dossier demande de'intervention,tu peut retrouver jusqu’à 200 sous dossier différents.
Mais la structure du lien est toujours identique, c'est uniquement le début du lien qui change. D'aprés ce que je comprend sur ce code, cela ne marcherai pas?
 

Roland_M

XLDnaute Barbatruc
Bonjour,

effectivement c'est pas très clair !?

tu dis:
"Mais la structure du lien est toujours identique, c'est uniquement le début du lien qui change."

si c'est le début du lien qui change alors la structure n'est forcément plus la même !?
que ce soit la suite du chemin, oui, mais pas l'inverse !?

il faudrait un exemple complet d'un lien en cours et du lien modifié !

EDIT: ton 1'msg
actuellement j'ai un lien du type:
\\Srvdc1\commun\HOT LINE\demande intervention
et j'aimerai :
\\192.1.1.9\HOT LINE\demande intervention.

alors où est la modif à faire avec ceci ?
 

maxou

XLDnaute Nouveau
Mon fichier vient d'etre déplacé sur notre serveur.

mon lien Hypertexte pointait sur mon ancien dossier
\\Srvdc1\commun\HOT LINE\demande intervention\menuiserie XXXX\S22C-116112108290.pdf

le lien va devenir :
//192.1.1.9\HOT LINE\ demande intervention\menuiserie XXXX\S22C-116112108290.pdf

Autre ligne dans mon fichier, avant je pointait sur :
\\Srvdc1\commun\HOT LINE\demande intervention\BXXXXX\6\document2016-09-26-104246.pdf

,Le lien deveindra
\//192.1.1.9\HOT LINE\demande intervention\BXXXXX\6\document2016-09-26-104246.pdf.

il va ensuite ainsi deux suite pour l'ensemble de mes liens

Cordialement et merci :)
 

Roland_M

XLDnaute Barbatruc
re:

voir avec ceci:

'selon l'exemple suivant:
'\\Srvdc1\commun\HOT LINE\demande intervention\menuiserie XXXX\S22C-116112108290.pdf
'\\192.1.1.9\HOT LINE\ demande intervention\menuiserie XXXX\S22C-116112108290.pdf
'\\Srvdc1\commun\HOT LINE\demande intervention\BXXXXX\6\document2016-09-26-104246.pdf
'\\192.1.1.9\HOT LINE\demande intervention\BXXXXX\6\document2016-09-26-104246.pdf.
Code:
Sub ModifierLien()
Dim H As Hyperlink, AdresOld$, AdresNew$, AdresH$, AdresN$, LenOld%
AdresOld$ = "\\srvdc1\commun\": LenOld = Len(AdresOld$)
AdresNew$ = "\\192.1.1.9\"
'
For Each H In ActiveSheet.Hyperlinks
AdresH$ = H.Address
If LCase(Left(AdresH$, LenOld)) = AdresOld$ Then
    AdresN$ = AdresNew$ & Mid(AdresH$, LenOld + 1)
    H.Address = AdresN$
    H.TextToDisplay = AdresN$
End If
Next
End Sub
 

maxou

XLDnaute Nouveau
Roland,

La macro fonctionne correctement, les liens sont biens mis a jours. merci.
Par contre, sur ce fichier, le contenu de la cellule est une date auquel j'associe un lien hypertexte.
En executant la macro, cette date disparait et je n'ai que le lien en visuel. Est il possible de mettre a jour le lien tout en preservant le contenu de la cellule?

Merci pour ton aide, j'ai déja fait un grand pas...

Cordialement Maxime
 

maxou

XLDnaute Nouveau
Bonjour Roland,

J'ai une question, l'instruction LenOld = Len(AdresOld$) permet de compte le nombre de caractères dans la chaine len odl?
et ensuite tu définit le nombre de caractère dans la nouvelle avec cette instruction:
AdresN$ = AdresNew$ & Mid(AdresH$, LenOld + 1)

J'aimerai bien maitriser cette macros trés utilise pour moi, merci :)
 

Statistiques des forums

Discussions
312 485
Messages
2 088 808
Membres
103 971
dernier inscrit
abdazee