XL 2013 Lier des cellules à un champ word

kalem

XLDnaute Junior
Bonjour à tous,

Tout est dans le titre, mais peut-être que quelques explications seront utiles.

J'ai une table des matières dans un fichier word, qui s'actualise régulièrement au fur et à mesure que je progresse dans la rédaction. Je peux sans problème la copier/coller sur excel. J'ai alors en A les titres des sections, en B les numéros de page.

Ce que je voudrais, c'est ne pas avoir à copier-coller mais que les numéros de page s'actualisent tout seuls en fonction de l'avancement du fichier word....

J'ai essayé "coller avec liaison", mais cela me met un objet hors des cellules.

Quelqu'un a-t-il une solution ? Sans VBA si possible ? (je suis encore très novice en la matière). Merci !

Bonnes fêtes à tous.
 

kalem

XLDnaute Junior
Re : Lier des cellules à un champ word

Je remonte le topic, car même si j'ai essayé de trouver la réponse tout seul comme un grand, je sèche.... :(
ça ne doit pourtant pas être si compliqué... Je ne désespére pas et reviens poster si je trouve. En attendant, si quelqu'un a une idée... Merci d'avance.
 
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Re : Lier des cellules à un champ word

Bonjour kalem,

Sans VBA si possible ? (je suis encore très novice en la matière).

Sans VBA ce n'est pas possible, mais la procédure n'est guère compliquée.

1) Dans le document Word insérez un signet sur la table des matières que vous nommerez TM

2) Activez Excel, touches Alt+F11 pour accéder à VBA, menu Outils => Références, recherchez et cochez la référence :

Microsoft Word xx.x Object Library

3) Dans le code VBA de la feuille Excel collez cette macro :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---cocher la référence Microsoft Word xx.x Object Library---
If Target.Address <> "$A$1" Then Exit Sub
Cancel = True
Dim App As Word.Application, s As Object
On Error Resume Next
Set App = GetObject(, "Word.Application")
Set s = App.ActiveDocument.Bookmarks("TM")
If s Is Nothing Then MsgBox "Signet TM introuvable !": Exit Sub
On Error GoTo 0
s.Range.Copy
Me.PasteSpecial "Texte" '"Texte Unicode"
Target.Select
End Sub
4) Double-clic sur la cellule A1.

Pour les mises à jour ultérieures il suffira de faire le double-clic.

A+
 

job75

XLDnaute Barbatruc
Re : Lier des cellules à un champ word

Re,

Avec le bouton sur la feuille et la macro toujours dans le code de la feuille :

- bouton de type ActiveX :

Code:
Private Sub CommandButton1_Click()
'---cocher la référence Microsoft Word xx.x Object Library---
Dim App As Word.Application, s As Object
On Error Resume Next
Set App = GetObject(, "Word.Application")
Set s = App.ActiveDocument.Bookmarks("TM")
If s Is Nothing Then MsgBox "Signet TM introuvable !": Exit Sub
On Error GoTo 0
s.Range.Copy
[A1].Select
Me.PasteSpecial "Texte" '"Texte Unicode"
[A1].Select
End Sub
- bouton de type Formulaire :

Code:
Sub Macro()
'---cocher la référence Microsoft Word xx.x Object Library---
Dim App As Word.Application, s As Object
On Error Resume Next
Set App = GetObject(, "Word.Application")
Set s = App.ActiveDocument.Bookmarks("TM")
If s Is Nothing Then MsgBox "Signet TM introuvable !": Exit Sub
On Error GoTo 0
s.Range.Copy
Application.Goto [A1]
Me.PasteSpecial "Texte" '"Texte Unicode"
[A1].Select
End Sub
A affecter au bouton.

Bonne fin de soirée.
A+
 
Dernière édition:

kalem

XLDnaute Junior
Re : Lier des cellules à un champ word

Merci. J'ai dû faire une erreur quelque part, car il me donne un message d'erreur : "utilisation incorrecte du mot "Me" " (avant PasteSpecial). Sinon, je me contenterais du double-clic en A1, c'est juste que ce n'est pas très intuitif, surtout si je dois partager le fichier avec d'autres utilisateurs.
 

job75

XLDnaute Barbatruc
Re : Lier des cellules à un champ word

Bonjour kalem,

Bah pourquoi croyez-vous que j'ai écrit :

et la macro toujours dans le code de la feuille :

Pour terminer j'ai mis le bouton dans Word avec cette macro :

Code:
Private Sub CommandButton1_Click()
'---cocher la référence Microsoft Excel xx.x Object Library---
Dim App As Excel.Application
Bookmarks("TM").Range.Select 'signet à créer
On Error Resume Next
Set App = GetObject(, "Excel.Application")
With App.ActiveWorkbook.Sheets(1)
  .[A:B].ClearContents 'RAZ
  Selection.Range.Copy
  App.GoTo .[A1], True 'cadrage
  .PasteSpecial "Texte" '"Texte Unicode"
  .[A1].Select
  .[B1] = "Page"
  .Columns("A:B").AutoFit 'ajustement largeur
End With
AppActivate "Excel" 'facultatif, à adapter suivant la version
End Sub
Fichier Word et Excel zippés joints.

Edit : dans les Options avancées de Word j'ai décoché "Afficher les codes de champs au lieu de leurs valeurs".

A+
 

Pièces jointes

  • Bonjour(1).zip
    26.2 KB · Affichages: 43
Dernière édition:

kalem

XLDnaute Junior
Re : Lier des cellules à un champ word

Merci, j'avais bien suivi ta procédure ; en fait, j'ai voulu faire la seconde manipulation, alors que j'aurais dû effacer la première. J'ai tout repris de manière propre, et c'est ok.
Le bouton sur Word est une fonctionnalité très intéressante (je ne savais même pas que c'était possible...). Merci encore !
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 288
Membres
103 508
dernier inscrit
max5554