Post by SpartanBonjour,
J'ai un Doc Word qui est en liaison avec un doc Excel, c'est à dire, si je
change des données sur l'exel, ces données sont aussi
changé sur le doc word.
Si je change d'emplacement les dossiers, le chemin de la liaison quant a lui
n'est pas changé donc les mises à jours ne peuvent se faire...
Il a t il un moyen pour avoir un chemin source qui permettrai de garder la
liaison tout en bougeant mes deux document?
Merci d'avance…
Bonjour,
Word remplace les chemins relatifs par des chemins absolus dans les champ
INCLUDEPICTURE, INCLUDETEXT, LINK, RD et HYPERLINK
C'est gênant lorsqu'on déplace les fichiers dans un autre dossier (ou lorsqu'o
les envoie à quelqu'un qui les déposeradans un dossier qui ne portera pa
forcément exactement le même nom)
Il existe une astuce géniale pour contourner ce problème, qui marche pour le
champs INCLUDEPICTURE, INCLUDETEXT, RD et HYPERLINK mais malheureusement pa
pour les champs LINK.
Cette astuce est présentée ici:
https://windowssecrets.com/forums/showthread.php/154379-Word-Fields-and-Relative-Paths-to-External-Files
Pour les champs LINK, il n'existe apparemment pas d'autre solution que de passe
par une macro telle que la suivante, (que vous pourrez par exemple lancer
partir d'une autre macro AutoOpen):
Sub FichiersLiésDansDossierCourant()
Dim OldPath As String, NewPath As String
Dim Rng As Range, Fld As Field, i As Long
' Construction de la chaîne Newpath correspondant au dossier courant
For i = 0 To UBound(Split(ActiveDocument.Path, "\")) - 0
NewPath = NewPath & Split(ActiveDocument.Path, "\")(i) & "\"
Next i
' Supprime les éventuels "\" en fin de chaîne
While Right(NewPath, 1) = "\"
NewPath = Left(NewPath, Len(NewPath) - 1)
Wend
' Ajoute un "\" en fin de chaîne
NewPath = NewPath & "\"
For Each Fld In ActiveDocument.StoryRanges(1).Fields
With Fld
' ignore les champs qui ne sont pas des liens vers des document
extérieurs
If Not .LinkFormat Is Nothing Then
With .LinkFormat
OldPath = Left(.SourceFullName, InStrRev(.SourceFullName, "\"))
' Remplace l'ancien chemin par le nouveau (s'ils diffèrent)
If OldPath <> NewPath Then
.SourceFullName = Replace(.SourceFullName, OldPath, NewPath)
On Error Resume Next
.AutoUpdate = False
On Error GoTo 0
End If
End With
End If
End With
Next Fld
End Sub