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: