XL 2016 Liens hypertextes qui se modifient tous seuls

Bandoulier

XLDnaute Junior
Bonjour à tous,

Dans un fichier Excel, j'ai plusieurs liens hypertextes qui lancent d'autres fichiers Excel. Tout ça marche très bien. Mais après enregistrement et fermeture du fichier, quand j'ouvre à nouveau, mes liens se sont transformés.
En effet, mes liens sont tous du type "File:///C:\Users\Patrick\Desktop\Fiches\nomdefichier.xlsx" mais après réouverture du fichier, ils deviennent "File:///C:\Users\Patrick\AppData\Roaming\Microsoft\Excel\Fiches\nomdefichier.xlsx" et bien entendu, les liens ne fonctionnent plus !
1) Comment éviter cela ?
2) Auriez-vous une combine pour modifier d'un coup tous les liens hypertextes ? (j'en ai 300 qui pointent dans le même dossier (Fiches)
Merci d'avance pour ce que vous pourrez faire
Cordialement
Patrick
 

job75

XLDnaute Barbatruc
Bonjour Bandoulier,

Pour éviter ce genre de problème il suffit normalement de ne pas modifier l'emplacement des fichiers.

Pour modifier les liens hypertextes exécutez cette macro :
Code:
Sub ModificationLiens()
Dim chemin1$, chemin2$, w As Worksheet, h As Hyperlink, x$
chemin1 = "C:\Users\Patrick\AppData\Roaming\Microsoft\Excel\Fiches\"
chemin2 = "C:\Users\Patrick\Desktop\Fiches\"
For Each w In ActiveWorkbook.Worksheets
    For Each h In w.Hyperlinks
        x = IIf(h.Address Like "?:\*", "", ThisWorkbook.Path & "\") & h.Address
        If x Like chemin1 & "*" Then h.Address = Replace(x, chemin1, chemin2)
Next h, w
End Sub
A+
 

Bandoulier

XLDnaute Junior
Désolé Job75, mais ça ne fonctionne pas. Au lancement de la macro ... rien ne se passe (du moins visuellement) mais quand je vais consulter mes liens, ils n'ont pas changé.
Pas grave, je les changerais manuellement à temps perdu.
Merci tout de même pour le temps que vous avez passé à mon problème
Cordialement
 

Boop1977

XLDnaute Nouveau
Bonjour Bandoulier,

Pour éviter ce genre de problème il suffit normalement de ne pas modifier l'emplacement des fichiers.

Pour modifier les liens hypertextes exécutez cette macro :
Code:
Sub ModificationLiens()
Dim chemin1$, chemin2$, w As Worksheet, h As Hyperlink, x$
chemin1 = "C:\Users\Patrick\AppData\Roaming\Microsoft\Excel\Fiches\"
chemin2 = "C:\Users\Patrick\Desktop\Fiches\"
For Each w In ActiveWorkbook.Worksheets
    For Each h In w.Hyperlinks
        x = IIf(h.Address Like "?:\*", "", ThisWorkbook.Path & "\") & h.Address
        If x Like chemin1 & "*" Then h.Address = Replace(x, chemin1, chemin2)
Next h, w
End Sub
A+
Merciiiiiii Tu viens de me sauver avec cette macro :p
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 341
Membres
111 107
dernier inscrit
cdel