Microsoft 365 Copier un tableau excel sur un document word existant-word.apps

M-1

XLDnaute Nouveau
Bonjour,

Je cherche à copier coller un tableau excel démographie dans un document word "modèle word"préexistant , à partir de la macro suivante:


J'ai préalablement créer un signet dans word pour que le tableau y soit rappatrié.
Je bloque à ce niveau du code: Set wdApp = New Word.Application

'Name of the existing Word doc.
Const stWordReport As String = "modèle word.docx"

'Word objects.

Dim wdApp As Object
Dim wdDoc As Object
Dim wdbmRange As Object

'Excel objects.
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim Démographie As Range

'Initialize the Excel objects.
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Démographie ")
Set Démographie = wsSheet.Range("C7:I21")

'Initialize the Word objects.
Set wdApp = New Word.Application


J'ai l'impression que je n'ai pas la bonne bibliothèque de référence, pourtant j'ai sélectionné les références OLE et Microsoft Office 16 object library.
Quelles sont les bibliothèques à cocher ? Est il possible d'en créer une ?
Si besoin je peux envoyer les fichiers correspondants.

Merci,


 

p56

XLDnaute Occasionnel
Bonjour,
En fait si on déclare les wdApp et wdDoc en tant qu'object, on est dans le cadre des "liaisons tardives", ç-a-d qu'on ne fait pas appel à une référence particulière.
Dans ce cadre, il convient alors d'initialiser l'object wdApp de cette façon :
Set wdApp = CreateObject("Word.Application")
L'avantage des liaisons tardives c'est que le fichier pourra facilement être utilisé sur d'autres versions d'excel.
L'inconvénient c'est que les object et constantes de la librairie devront être déclarés dans le code. Comme par exemple en tête de module :
Public Const wdGoToBookmark = -1
ce qui permettra d'utiliser la constante wdGoToBookmark par la suite
Les autres valeurs de ce genre de constante sont dispo sur le site de Microsoft
P.
 

M-1

XLDnaute Nouveau
Bonjour,

Je vous remercie pour ce retour qui m'aide un peu. La première ligne s'est débloquée avec le code Set wdApp = CreateObject("Word.Application")

Cependant je n'arrive pas à déclarer la constante de la librairie
Public Const wdGoToBookmark = -1
Une erreur "attribut incompatible avec une fonction sub" s'affiche.

Si j'ai bien compris elle sert à déclarer les constantes pour le signet de la ligne du code
Set wdbmRange = wdDoc.Bookmarks("Report").Range

Comment est ce que je dois déclarer cette constante ?

Merci pour vos éclaircissements.
 

M-1

XLDnaute Nouveau
Bonjour,

Je comprends bien mais j'ai besoin d'affecter une constante à mon signet ?
Sans ça, comment faire pour que la ligne suivante du code ne soit plus en erreur ?
La ligne suivante ne figure pas dans une bibliothèque.
Set wdbmRange = wdDoc.Bookmarks("Report").Range

Merci,
 

job75

XLDnaute Barbatruc
Bonsoir M21,

Le code ne pose pas de problème, wdbmRange doit être déclarée As Object dans Excel :
VB:
Sub Test()
Dim wdApp As Object, wdDoc As Object, wdbmRange As Object
Set wdApp = GetObject(, "Word.Application")
Set wdDoc = wdApp.activedocument
Set wdbmRange = wdDoc.Bookmarks("Report").Range
wdbmRange.Select
End Sub
Ici le doc Word doit avoir été ouvert.
 

job75

XLDnaute Barbatruc
Bonjour M21,

Chez moi le code du post #6 fonctionne sans problème.

Bien sûr il faut avoir créé le signet "Report".

Ouvrez les 2 fichiers joints et exécutez la macro.

A+
 

Pièces jointes

  • Pilote(1).xlsm
    15 KB · Affichages: 8
  • Document Word.docx
    12.1 KB · Affichages: 5

M-1

XLDnaute Nouveau
Bonjour,
Je n'arrive vraiment pas à intégrer les lignes suivantes... je vous envoie ma macro et le modèle word en PJ.
c'est la macro "export excel to word"
Merci
 

Pièces jointes

  • tableau excel.xls
    64 KB · Affichages: 2
  • modèle word.docx
    18.8 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonsoir,

Enfin vous avez joint vos fichiers !

Placez les dans le même dossier (le bureau), ouvrez le fichier Excel et exécutez la macro :
VB:
Sub Export_Table_Word()
 
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wdbmRange As Object
 
      'Excel objects.
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    Dim Démographie As Range
 
    'Initialize the Excel objects.
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets("4-Démographie AE")
    Set Démographie = wsSheet.Range("C7:I21")

    'Initialize the Word objects.
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\modèle word.docx") 'ouverture du document Word
    Set wdbmRange = wdDoc.Bookmarks("Tableau_Démographie").Range

    wdbmRange.Select
    Démographie.Copy
    wdApp.Selection.Paste
    Application.CutCopyMode = 0

End Sub

Bonne nuit.
 

Pièces jointes

  • tableau excel.xls
    80.5 KB · Affichages: 7
  • modèle word.docx
    18.8 KB · Affichages: 8
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour M21, le forum,

Un code un peu plus élaboré :
VB:
Sub Export_Table_Word()
    
    Dim wbBook As Workbook, wsSheet As Worksheet, Démographie As Range
    Dim nomDoc$, wdApp As Object, wdDoc As Object, wdbmRange As Object
    
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets("4-Démographie AE")
    Set Démographie = wsSheet.Range("C7:I21")

    nomDoc = "modèle word.docx"
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If wdApp Is Nothing Then Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    wdApp.Documents(nomDoc).Close False 'ferme le document s'il est ouvert
    Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\" & nomDoc) 'ouverture du document Word
    If wdDoc Is Nothing Then MsgBox "Document Word introuvable !", 48: wdApp.Quit: Exit Sub
    Set wdbmRange = wdDoc.Bookmarks("Tableau_Démographie").Range
    If wdbmRange Is Nothing Then MsgBox "Signet Word introuvable !", 48: wdApp.Quit: Exit Sub
    
    wdbmRange.Select
    Démographie.Copy
    wdApp.Selection.Paste
    Application.CutCopyMode = 0
    
    AppActivate wdApp.Caption 'activation facultative

End Sub
A+
 

Pièces jointes

  • tableau excel(1).xls
    82 KB · Affichages: 14
  • modèle word.docx
    18.8 KB · Affichages: 9

Discussions similaires

Statistiques des forums

Discussions
312 173
Messages
2 085 937
Membres
103 052
dernier inscrit
nizar0007