Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Copier Coller un tableau de Excel vers Word

NVerder

XLDnaute Nouveau
Bonjour à tous,

Je souhaite faire communiquer excel et word
Il y a de nombreux code sur les forums mais j'ai beau essayer de les utiliser mon programme ne fonctionne pas
Le tableau provenant d'Excel est bien copié.
Le document Word est bien ouvert, renommé
Le signet de Word est bien reconnu et sélectionné
Mais j'ai un message d'erreur sur la ligne

Code:
    wordApp.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile, Placement:=wdinline

J'obtiens le message suivant :


Je précise que j'ai bien activé la référence "Microsoft Word 16.0 Object Library"

Merci pour votre aide

Nicolas

Voici mon code :

VB:
Public Sub Création Rapport

Dim wordApp As Object
Dim wordDoc As Object
'
Dim nomrapport As String
Dim Monchemin As String
Set wordApp = CreateObject("Word.application") 'Creation d'un objet Word
wordApp.ScreenUpdating = False
wordApp.Visible = True 'Pas d'affichage de l'appli
wordApp.Documents.Add Template:="C:\Monchemin\Mon modele de document word.docx", DocumentType:=wdNewBlankDocument 'Ouverture du modèle
                                               
'choisir un nom au document
nomrapport = InputBox("donnez un nom à votre document")
'On enregistre
wordApp.ChangeFileOpenDirectory Monchemin
wordApp.ActiveDocument.SaveAs Filename:=nomrapport, FileFormat:=wdFormatDocument

With Sheets("MaFeuilleExcel")
    Range("E1:G17").Select
    Selection.Copy
    wordApp.ActiveDocument.Bookmarks("Mon_SIGNET").Range.Select
    wordApp.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile, Placement:=wdinline
    Application.CutCopyMode = False
    wordApp.ActiveDocument.Save
End With

'On enregistre le fichier Word
wordApp.ScreenUpdating = True 'rétabli le rafraichissement du fichier word
wordApp.ChangeFileOpenDirectory Monchemin
wordApp.ActiveDocument.SaveAs Filename:=nomrapport, FileFormat:=wdFormatDocument

'On ferme Word
wordApp.ActiveDocument.Close
wordApp.Quit
Set wordApp = Nothing

Application.CutCopyMode = False ' on vide le presse-papier
Application.ScreenUpdating = True 'rétablie le rafraichissement de fichier excel
End sub
 

jmfmarques

XLDnaute Accro
Bonjour
Je précise que j'ai bien activé la référence "Microsoft Word 16.0 Object Library"
mais tu ne t'en sers pas puisque tu utilises l'automation en liaison tardive (Set wordApp = CreateObject("Word.application") 'Creation d'un objet Word)
La constante word wdPasteEnhancedMetafile est par exemple dés lors inconnue et il te faut la remplacer par sa valeur .
 

NVerder

XLDnaute Nouveau
Merci Jmphmarques de t’être penché sur mon code

Néanmoins, je mesure mon faible niveau, ta réponse est plutôt du chinois pour moi
Que faudrait-il que je change dans mon code pour le rendre fonctionnel ?
 

jmfmarques

XLDnaute Accro
Que faudrait-il que je change dans mon code pour le rendre fonctionnel ?
Ben, je te l'ai dit : remplacer les deux constantes Word utilisées par (directement) leur valeur.
Tu es ici sur un forum VBA/Excel et non VBA/Word. Ce n'est que depuis Word (rubriques constantes) que tu pourras déterminer la valeur de ces deux constantes.
Je te rappelle qu'en matière d'automation, la connaissance de l'application pilotée (Word, donc) est indispensable et primordiale.

EDIT : je pourrais bien sûr ouvrir Word (que je n'utilise jamais moi-même) pour y aller à la pêche des valeurs de ces deux constantes. Mais il s'agirait alors de faire (en outre là où je ne vais jamais) des gestes à ta place et ce serait plutôt saugrenu. Tu voudras bien le faire toi-même.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…