Copier-coller graphiques Excel vers Word Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Tibo16
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 31 août 2015
Version d'Excel : 2013

Message par Tibo16 » 4 septembre 2015, 16:53

Bonjour forumeuses et forumeurs,

Il y a plusieurs sujet qui traite partiellement de la question, mais je n'ai rien trouvé qui me satisfasse.

Ma "situation" : j'ai un fichier Excel qui contient de nombreux onglets avec sur certains d'entre eux des graphiques (mis à jour à partir d'onglets de données). J'ai parallèlement un fichier Word, un rapport déjà mis en page.

Pour chaque cas étudié (données différentes), j'édite donc un rapport avec les graphiques correspondants. Pour le moment, je copie-colle les graphiques un par un (en format image - par choix).

Mon "projet" : automatiser tout ça à l'aide d'une macro (placée de préférence dans l'Excel mais si c'est plus simple dans le Word, pas de soucis).

Où j'en suis ? Actuellement, au point zéro. J'ai une maîtrise assez light de VBA et je ne sais pas trop comment faire ma macro.
Je suis donc preneur de vos suggestions/idées/conseils/exemples/codes ...

Merci !
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 4 septembre 2015, 16:59

Sous Excel 2007, il existait coller avec liaison, dans les options de collage spécial...
A voir ? Daniel
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
T
Tibo16
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 31 août 2015
Version d'Excel : 2013

Message par Tibo16 » 4 septembre 2015, 17:02

Merci pour ta réponse.
Il existe effectivement cette possibilité.
J'ai plusieurs graphs (une quinzaine) et je cherche donc une solution en VBA pour automatiser la chose.

Petite précision : j'utilise Office 2013.
T
Tibo16
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 31 août 2015
Version d'Excel : 2013

Message par Tibo16 » 9 septembre 2015, 09:00

Salut Forum,

Une fois n'est pas coutume, j'ai réussi à me dépatouiller tout seul. JE vous fait donc profiter de ma solution ci-dessous. Au préalable, il est nécessaire (avec ma solution) d'avoir défini dans un doc Word des signets aux différents emplacements souhaités des graphiques.
Sub Export_graph_Word()

Dim wdApp As New Word.Application
Dim wdDoc As Word.Document
Dim Nom_doc As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim deb As Integer
Dim fin As Integer

Application.ScreenUpdating = False 'empêche le rafraîchissement automatique de l'écran Excel
wdApp.ScreenUpdating = False 'idem pour Word

Nom_doc = Application.GetOpenFilename(FileFilter:="Word.Document(*.docx;*.doc),*.docx;*.doc", Title:="Sélectionnez un document Word") 'permet d'ouvrir une fenêtre pour définir le document Word à ouvrir
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(Nom_doc)

k = 0 'permet de compter le nombre de graphiques passés en revue
For i = 1 To Sheets.Count 'passe en revue les onglets du fichier
Sheets(i).Activate

'Boucle pour selectionner un à un les graphiques de la feuille active et faire les modifications
        For j = 1 To ActiveSheet.ChartObjects.Count
            Sheets(i).ChartObjects(j).CopyPicture 'copie le graphique sélectionné en format image
            k = k + 1 'implémente le compteur de graphiques
            wdDoc.Activate 'active le fichier Word
            deb = wdDoc.Bookmarks("Graph" & k).Start 'repère le début du signet concerné
            fin = wdDoc.Bookmarks("Graph" & k).End 'repère la fin du signet concerné
            wdDoc.Bookmarks("Graph" & k).Range.Select 'permet d'atteindre le signet correspondant à l'emplacement du graphique
            wdDoc.Bookmarks("Graph" & k).Delete 'supprime les données du signet (et supprime le signet en même temps)
            wdApp.Selection.PasteAndFormat (wdChartPicture) 'collage du graphique en format image
            wdApp.Selection.InsertParagraphAfter 'insère un saut de ligne
            wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'centre le graphique
            wdDoc.Range(deb, fin).Bookmarks.Add ("Graph" & k) 'on recrée le signet avec les infos début et fin de l'emplacement
        Next j
Next i
wdApp.ScreenUpdating = True
wdApp.Selection.Goto what:=wdGoToPage, Count:=1 'aller à la 1ère page du doc Word
wdApp.ActiveDocument.Save 'enregistrement du doc Word

Application.CutCopyMode = False 'vide le presse-papier
Application.ScreenUpdating = True
MsgBox "EXPORT GRAPHIQUES WORD OK"

End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message