Définir plusieurs ChartObjects

Bonjour,

J'utilise dans mon code la méthode ChartObjets, pour récupérer des graphiques et les incorporer dans Word.

 Set wbBook = ThisWorkbook
 Set wsSheet = wbBook.Worksheets("Feuil1")
 Set ChartObj = wsSheet.ChartObjects("Graphique1")

Sauf que cette méthode me permet de récupérer qu'un seul graphique. Comment faire pour récupérer tous les Graphs commençant par "Graphique" (exemple : Graphique1, Graphique2, Graphique3, etc..)

Merci d'avance pour votre aide.

Bonjour,

Je n'ai jamais essayé, mais pour boucler ça me parait assez basique :

Dim i As Integer
 Set wbBook = ThisWorkbook
 Set wsSheet = wbBook.Worksheets("Feuil1")
For i = 1 To wsSheet.ChartObjects.Count
  Set ChartObj = wsSheet.ChartObjects("Graphique"&CStr(i))
Next i ' Bien sûr on doit pouvoir faire un For Each Grgrgr In wsSheet.ChartObjects.

Bonjour,

Et merci pour ta réponse, j'ai essayé de mettre en application ce que tu m'as envoyé et je tombe sur une erreur "Objet requis"

 Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets("Feuil1")
    For Each Graphique In whSheet.ChartObjects.Count
    'Set ChartObj = wsSheet.ChartObjects("Graphique 1")
    Set ChartObj = wsSheet.ChartObjects("Graphique" & CStr(Graphique))
    Next Graphique
    

Est-ce que tu peux

Voilà, merci pour votre aide.

3chartreport.docx (11.28 Ko)
2classeur1.xlsx (23.56 Ko)

Essaie comme ça :

    'Initialize the Excel objects.
    Set wbBook = ThisWorkbook
    Set wsSheet = ActiveSheet
    For Each graphique In wsSheet.ChartObjects
      If Left(graphique.Name, 5) = "Chart" Then Set ChartObj = graphique

    'Export the chart to the current directory, using the specified name, and save the chart as a .gif
    ChartObj.Chart.Export _
                   Filename:=wbBook.Path & "" & stChartName, _
                   FilterName:="PNG"
    Next
    

Merci pour ton aide, mais j'ai une question, pourquoi mettre un "5" à la fin de cette ligne ?

  (graphique.Name, 5)     

Merci encore.

Left(graphique.Name, 5) = "Chart"

Chart en 5 lettres

Merci beaucoup !!

Bonjour,

Je me permets de requérir votre aide une dernière fois, même si j'ai mis le sujet en résolu (pour éviter d'en ouvrir un nouveau)

Il semblerait que la boucle :

For Each Graphique In wsSheet.ChartObjects
     If Left(Graphique.Name, 5) = "Chart" Then Set ChartObj = Graphique

    ChartObj.Chart.Export _
                   Filename:=wbBook.Path & "\" & stChartName, _
                   FilterName:="PNG"
    Next

Écrase les graphiques présents sur la feuille, pour n'afficher que le plus récent.

Merci encore pour aide, et désolé pour la réouverture du sujet...

Je suppose que stChartName doit contenir un nom pour chaque graphe.

For Each Graphique In wsSheet.ChartObjects
     If Left(Graphique.Name, 5) = "Chart" Then Set ChartObj = Graphique
    stChartName=Graphique.Name
    ChartObj.Chart.Export _
                   Filename:=wbBook.Path & "\" & stChartName, _
                   FilterName:="PNG"
    Next

Bonjour,

Et merci pour ton retour.

Je tombe malheureusement sur cette erreur : Affectation à une constante non autorisé.

Dans ce cas :

For Each Graphique In wsSheet.ChartObjects
     If Left(Graphique.Name, 5) = "Chart" Then Set ChartObj = Graphique
    ChartObj.Chart.Export _
                   Filename:=wbBook.Path & "\" & Graphique.Name, _
                   FilterName:="PNG"
    Next

Même souci, malheureusement :/

Mais je vais essayer de me débarbouiller de mon coté.

Merci encore pour ton aide.

Rechercher des sujets similaires à "definir chartobjects"