Comment peut-on prendre des données sur une feuille de calcul Excel (tableau ou graphique) et automatiser leur exportation dans un document Word ? Cela est possible en combinant astucieusement VBA Word et VBA Excel.


 
- 1 – Sur une nouvelle feuille de calcul, créez un tableau de données, (ici A1:D8) puis à partir de ce tableau créez le graphique de votre choix.

- 2 – Accédez ensuite à votre éditeur Visual Basic ALT + F11 ou Développeur / Visual Basic. Pour pouvoir manipuler les objets ou les collections d’objets de Word, nous devons nous assurer que la bibliothèque qui les contient est active dans votre éditeur Visual Basic. Passez la commande F2 ou Affichage / Explorateur d’objets et vérifier sa présence dans la liste des bibliothèques d’objets.
 
- 3 – Si la bibliothèque Word est absente de la liste, passez la commande Outils / Références… et cochez la référence Microsoft Word 12.0 Object Library pour activer la bibliothèque des objets Word. Puis validez en cliquant sur Ok.
 
- 4 – Voici à quoi pourrait ressembler le code, à vous de l’adapter !
Sub Passage_Excel_Word()
Dim appWord As New Word.Application
Dim docWord As New Word.Document
' Il faut créer un nouveau document Word dans l'application Word
With appWord
 .Visible = True
Set docWord = .Documents.Add
  .Activate
End With
'Dans Word on ajoute une ligne de titre avec une mise en forme
With appWord.Selection
  .TypeText Text:="Chiffre d'affaire 2003"
 .HomeKey Unit:=wdLine
 .EndKey Unit:=wdLine, Extend:=wdExtend
.ParagraphFormat.Alignment = wdAlignParagraphCenter
  .Font.Size = 18
  With .Font
.Name = "Arial"
.Size = 16
.Bold = True
  End With
'Copier le tableau Excel dans le presse papier
  Range("a1:b8").Copy
' Coller le tableau dans Word avec liaison
.EndKey Unit:=wdLine
  .TypeParagraph
  .PasteSpecial Link:=True, DataType:=wdPasteOLEObject, _
Placement:=wdInLine, DisplayAsIcon:=False
'Copier le graphique Excel dans le presse papier
  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
'Coller le graphique dans Word
   .TypeParagraph
   .Paste
End With
'Enregistrer le document Word
With docWord
.SaveAs  ThisWorkbook.Path & "\ca_2003.doc",  Allowsubstitutions:=True
'Dans Word Aperçu avant impression du résultat
   .PrintPreview
'Réinitialiser l'objet
Set appWord = Nothing
End With
End Sub

- 5 – après exécution du code vous devriez avoir le document suivant en Aperçu avant impression dans Word.




4 commentaires:

Anonyme a dit…

Bonsoir,
Comment imposer la taille de l'objet copié (widht,height)lors du passage excel vers word par ole automation.

Anonyme a dit…

merci c'est tres clair

Anonyme a dit…

Monsieur
je n'arrive pas a traduire en code VBA un tableau excel en texte sans mise en forme WORD pour ensuite continuer ma macro et utiliser remplacer par notamment
marque de paragraphe
tabulation
et saut de ligne
Maeci d'avance

Anonyme a dit…

bonjour, je souhaite créer un document excel en choisissant dans une liste déroulante un membre du personnel et où j'aurai le choix entre plusieurs onglets à cocher et à décocher, chaque onglet représente un document qui serait renvoyer vers word pour y être imprimé en 2 exemplaires et envoyer sur un compte mail, merci jean christophe,jctassart@hotmail.com

Enregistrer un commentaire

top