Macro copier tableau excel vers des signets dans word

Signaler
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011
-
Messages postés
280
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
5 mai 2016
-
Bonjour,

Voici mon sujet,

j'ai un tableau excel qui sera mis à jour, et dès que ce dernier sera fait, j'aimerais pouvoir créer une macro qui l'exporterai vers une feuille word à des endroits précis (via des créations de signets) et le collet en fichier méta améliorer :

j'ai créer un code,( en trouvant sur internet et avec des macros manuelles) et je vous avoue que je me demande pourquoi ca ne fonctionne pas....et me dit qu'il y a une erreur dans mon projet..mais ou ??,

pouvez vous regarder le sujet ?

Merci d'avance sur vos éventuels retours

voici mon code :

Private Sub CommandButton1_Click()

Dim oWdApp As Object 'Word.Application
Dim oWdDoc As Object 'Word.Document

'Lancer une instance Word
Set oWdApp = CreateObject("Word.Application")

'Ouvrir un nouveau document
Set oWdDoc = oWdApp.Documents.Open("C:\Documents and Settings\Popo\Bureau\Yvon\codage\Document1.doc")

'Rendre Word visible
oWdApp.Visible = True

'Copier une plage depuis Excel
ActiveSheet.Range("tableau").Copy

'cherche le signet dans la feuille word
Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"

'Coller la plage dans Word
oWdApp.Selection.PasteAndFormat (wdPasteDefault)

'aligne le tableau au milieu de la page
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

'Annuler le mode couper/copier
Application.CutCopyMode = False

End Sub

6 réponses

Messages postés
6826
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 juillet 2020
109
Bonjour,
Essaie ceci:

'cochez la référence Microsoft Word 11.0 Object Library
Private Sub CommandButton1_Click()
  
    Dim oWord As Word.Application
    'Créer une instance de word
   Set oWord = CreateObject("Word.Application")

'Copier une plage depuis Excel
 Range("A2:C10").Select
 Selection.Copy

'Ouvrir un nouveau document
 oWord.Documents.Open "C:\Documents and Settings\Popo\Bureau\Yvon\codage\Document1.doc" 

    'rendre le document word visible
    oWord.Visible = True
    
    'cherche le signet dans la feuille word
  oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
  
  'Coller la plage dans Word
  oWord.Selection.PasteAndFormat (wdPasteDefault)
   
   'aligne le tableau au milieu de la page
  oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
 
 'Annuler le mode couper/copier
Application.CutCopyMode = False

End Sub



@+Le Pivert
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011

Merci de votre réponse!!!

je viens d'appliquer le code, et cela fonctionne ! MERCI...cependant,lorsque le tableau est collé dans le fichier word, il n'est pas en méta fichier amélioré, ni aligné au centre....
Messages postés
6826
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 juillet 2020
109
Pour l'alignement au centre remplacer:

oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

par

oWord.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
Messages postés
6826
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 juillet 2020
109
Après une recherche sur Google
"metafichier excel" je suis tombé sur une réponse de ce forum:

PasteSpecial DataType:=wdPasteEnhancedMetafile

je n'ai eu qu'a l'adapter:

oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile

mais le centrage n'allait plus c'était devenu une shape.Donc voici le code complet:

'cochez la référence Microsoft Word 11.0 Object Library
Option Explicit
Private Sub CommandButton1_Click()
  
    Dim oWord As Word.Application
    'Créer une instance de word
   Set oWord = CreateObject("Word.Application")

'Copier une plage depuis Excel
 Range("A2:C10").Select
 Selection.Copy

'Ouvrir un nouveau document
 oWord.Documents.Open "C:\Documents and Settings\ACTIF\Mes documents\Doc1.doc"

    'rendre le document word visible
    oWord.Visible = True

    'cherche le signet dans la feuille word
  oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
  '
  'Coller la plage dans Word
  oWord.Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
 
 'aligne le tableau au milieu de la page
  oWord.Documents(1).Shapes(1).IncrementLeft 117#

 'Annuler le mode couper/copier
Application.CutCopyMode = False
oWord.Quit
End Sub


Le Pivert
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011

Merci bcp pour cet réponse, cela fonctionne parfaitement !


encore merci !
Messages postés
280
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
5 mai 2016

Bonjour
j'ai le même problème j'aimerais qu'en sorti de mon filtre avancé j'ai une macro qui me copie les résultats et me les envois dans word ou en pdf mais seulement j'y connais rien en VBA ...
Merci d'avoir lu ce message