VBA: Copier un graphique excel vers word

flobevi Messages postés 1 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 30 mars 2011 - 30 mars 2011 à 19:34
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015 - 31 mars 2011 à 10:52
Bonjour,
je suis débutant en code Vba, et je cherche à exporter un graphique excel sur un document Word via des signets.
J'ai cherché sur de nombreux forums, mais je tourne en rond....
J'ai essayé d'écrire le code (ci dessous), mais il manque surement des éléments indispensables ou des erreurs importantes...
Merci de votre aide...



Sub graphtest()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = New Word.Application
WordApp.Visible = True

'ouvre document Word
Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\test.doc")

'pour copier le graphique "Graphe" dans non classeur excel
ActiveSheet.ChartObjects("Graphe").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy

' Le signet pour ce graphique se nomme "graphcourbe" dans Word

With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="graphcourbe"
End With

'Recherche du signet "graphcourbe"
Selection.GoTo What:=wdGoToBookmark, Name:="graphcourbe"


'Collage du graphique dans Word

Selection.PasteSpecial Link:=false, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False


' Ajustement du graphique à la page word
document_word.Tables(1).AutoFitBehavior wdAutoFitWindow

End Sub

3 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
30 mars 2011 à 20:25
Bonjour,

Voici un petit exemple qui fonctione. Il part du principe que le signet "signetGraphique" est déjà créé dans le document Word et que la macro est exécuté depuis Excel. Il faut aussi penser à ajouter la référence "Microsoft Word X.X Object Library" à votre classeur.

Public Sub CopieGraphique()

    'Récupération du graphique qui, dans mon exemple, se trouve sur la feuille 1
    'et se nomme "Graphique 1"
    Dim graphique As Shape
    Set graphique = Feuil1.Shapes("Graphique 1")
    
    On Error GoTo fin
    
    'Nouvelle instance de Word
    Dim wordApp As New Word.Application
    
    'Ouverture du document Word
    Dim wordDoc As Word.Document
    Set wordDoc = wordApp.Documents.Open("C:\Test.doc")
    
    'Copie le graphique
    graphique.Copy
    
    'Colle le graphique dans le document Word
    wordDoc.Bookmarks("signetGraphique").Range.PasteAndFormat wdPasteDefault
               
    'Ferme le document word avec sauvegarde
    wordDoc.Close True
fin:

    'Quite l'application Word
    wordApp.Quit
    Set wordApp = Nothing
End Sub
1
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015
31 mars 2011 à 09:01
Merci..
J'essayerai ce soir ...
Merci encore
0
flostralian Messages postés 26 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 26 mars 2015
31 mars 2011 à 10:52
Merci ca marche!
0
Rejoignez-nous