Code VBA pour copier coller des graphiques

Bonjour,

J'ai un fichier Excel qui contient des graphiques et je souhaiterai transférer ces graphes dans une feuille Word en utilisant de VBA.

Note : Vous pouvez voir le type des graphes avec les propriétés développeur d'excel.

Merci

cordialement

15test.xlsx (150.21 Ko)

Une première piste. Pas assez d'éléments pour aller plus loin.

Sub Macro1()
    Dim oWord As Object
    Dim oDoc As Object

    'On copie la charte active
    ActiveChart.ChartArea.Select
    ActiveChart.ChartArea.Copy

    ' On crée un fichier Word
    Set oWord = CreateObject("Word.Application")
    Set oDoc = oWord.Documents.Add
    oWord.Visible = True

    ' et on la colle dans le fichier Word
    With oWord.Selection
        .Range.PasteSpecial
    End With
End Sub

Je n'avais pas vu qu'il y avait trois graphes dans vitre fichier.
Corrigé.

16test.xlsm (160.45 Ko)

Bonjour, Merci beaucoup, j'ai pu développé un script ressemblant au votre mais ce que j'ai remarqué que le graphe s'affiche pas dans l'ordre, normalement il m'affiche le graphe de la feuil 1 et puis les graphes ne s'affichent pas dans l'ordre, mais là il me les affiche le contraire , il commence par le dernier et puis l'avant dernier , ainsi de suite. Avez-vous une idée sur ça ?

Cordialement et merci beaucoup :)

Il suffit d'inverser l'ordre dans le script.
Lire :

    For x = 4 To 2 Step -1

au lieu de :

    For x = 2 To 4

Bonjour Merci pour votre réponse, en faite ça ne réponds pas à mon besoin, car cette feuille excel je l'utilise juste comme un petit modèle , ci-dessous le code. J'ai compris d'où il vient le problème, le cursus il se met toujours au début de (graphe/texte) copier et puis il fait autre (copier/coller) jusqu'à à la fin . Sa logique il trouve le 1 et il met le cursus derrière le 1 et puis il copier 2 et ça donne " 2 1" et puis il copier le 3 et ça donne "3 2 1" et ainsi de suite.... Donc je cherche un code VBA pour mettre le cursus au début pour qu'il m'affiche correctement " 1 2 3 ...." . Sur chatGPT il me dit d'ajouter cette ligne qui met le cursus à la fin de (texte/Graphe) : oWord.Selection.Collapse Direction:=wdCollapseEnd

Voici le code que j'utilise actuellement et il manque juste le bon ordre des graphes pour avoir un code complet.

Sub Macro1()
Dim oWord As Object
Dim oDoc As Object
Dim ws As Chart
Dim i As Integer

' On crée un fichier Word
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents.Add
oWord.Visible = True
i = 0
For Each ws In ThisWorkbook.Charts
i = i + 1
oWord.Selection.Range.Text = "Courbe N° " & i & ": " & ws.Name
' Vérifier si la feuille a un graphique actif
ws.Activate
' Sélectionner le graphique actif
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy

' Coller le graphique dans le document Word ouvert
' Utilisez le nom du fichier Word ouvert comme document cible

With oWord.Selection
.Range.PasteSpecial
' Insérer une page de saut après chaque graphique (facultatif)
.InsertBreak Type:=10
End With
chartCount = chartCount + 1
Next ws
End Sub

Attention : .InsertBreak Type:=10 correspond à un saut de ligne. Pour un saut de page c'est la valeur 7 qu'il faut.
Prenez l'habitude d'utiliser les constantes quand elles existent, c'est beaucoup plus facile à maintenir (.InsertBreak Type:=wdPageBreak)

17graphestodoc.xlsm (162.38 Ko)
Rechercher des sujets similaires à "code vba copier coller graphiques"