Bonjour,
Faisant beaucoup de liens de cellules Excel vers Word je me suis vite heurter à un soucis étrange.
Les liens ne ce font pas toujours avec le "Nom définis" de la cellule mais par L1C1, ce qui est très fâcheux sur des cellules qui bouge.
Ce qui à d'étrange c'est qu'en utilisant le même procédé le résultat diffère parfois (Nom/L1C1).
Les infos à ce sujet mon été très dur à trouver, par conséquent je vous partage une solution.
Utilisant le Presse-papier :
Dans Excel : La première macro va fabriquer le lien et le placer dans le presse-papier.
Dans Word : La seconde macro va fabriquer un lien avec le contenu du presse-papier (vérifie si le contenu représente bien un lien).
(Je verrai demain pour contrôler Excel depuis Word pour n'avoir qu'une macro et éviter de devoir ajouter les références forms pour le presse-papier).
Dans Excel ce placer sur la cellule nommé :
Dans word ce placer à l'endroit voulu :
Dans Word et Excel :
Activer la reference Microsoft Forms 2.0 Object Library
(Parcourir FM20.dll si comme moi vous ne la trouvé pas)
Faisant beaucoup de liens de cellules Excel vers Word je me suis vite heurter à un soucis étrange.
Les liens ne ce font pas toujours avec le "Nom définis" de la cellule mais par L1C1, ce qui est très fâcheux sur des cellules qui bouge.
Ce qui à d'étrange c'est qu'en utilisant le même procédé le résultat diffère parfois (Nom/L1C1).
Les infos à ce sujet mon été très dur à trouver, par conséquent je vous partage une solution.
Utilisant le Presse-papier :
Dans Excel : La première macro va fabriquer le lien et le placer dans le presse-papier.
Dans Word : La seconde macro va fabriquer un lien avec le contenu du presse-papier (vérifie si le contenu représente bien un lien).
(Je verrai demain pour contrôler Excel depuis Word pour n'avoir qu'une macro et éviter de devoir ajouter les références forms pour le presse-papier).
Dans Excel ce placer sur la cellule nommé :
VB:
Sub LienVersWord()
'Contenu du champ pour Word
Dim chemin As String, cible As String
On Error Resume Next
cible = ActiveSheet.Name & "!" & ActiveCell.Name.Name
On Error GoTo 0
If cible = "" Then
MsgBox "La cellule sélectionnée ne possède pas de nom." & vbCrLf & vbCrLf & _
"Sur votre document excel, veuillez sélectionner une cellule nommé."
Exit Sub
End If
chemin = Replace(ActiveWorkbook.FullName, "\", "\\")
chemin = "LINK Excel.Sheet.8 " & _
"""" & chemin & """" & " " & """" & cible & """" & _
" \a \t"
'\* MERGEFORMAT
'Dans le presse-papier
'activer la reference Microsoft Forms 2.0 Object Library
'parcourir FM20.dll
Dim x As New dataobject
With x
.settext chemin
.putinclipboard
End With
End Sub
Dans word ce placer à l'endroit voulu :
VB:
Sub LienDeExcel()
'activer la reference Microsoft Forms 2.0 Object Library
'parcourir FM20.dll
Application.ScreenUpdating = False
'Récupération du presse-papier
On Error Resume Next
Dim MyData As DataObject
Set MyData = New DataObject
Dim lien As String
' Get data from the clipboard.
MyData.GetFromClipboard
' Assign clipboard contents to string variable.
lien = MyData.GetText(1)
If lien = "" Then
MsgBox "Aucun texte n'est présent dans le presse-papier." & vbCrLf & vbCrLf & _
"Sur votre document excel, veuillez sélectionner une cellule nommé et utiliser la macro."
Exit Sub
End If
If Not lien Like "*LINK Excel.Sheet.8*" Then
MsgBox "Sur votre document excel, veuillez sélectionner une cellule nommé et utiliser la macro."
Exit Sub
End If
ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
lien, PreserveFormatting:=False
End Sub
Dans Word et Excel :
Activer la reference Microsoft Forms 2.0 Object Library
(Parcourir FM20.dll si comme moi vous ne la trouvé pas)
Dernière édition: