XL 2016 Automatisation graphique et export

cocro

XLDnaute Junior
Bonjour,
je dois réaliser plusieurs graphiques communaux qui devront être intégrés dans un document infographié.
Ce sont 4 séries d'histogramme pour 120 communes qui sont ainsi à créer. Une automatisation s'imposerait mais je ne sais comment m'y prendre 😞

je joins en exemple un extrait du tableau de données et graphique attendu.
De mon graphique, j'en ai fait un modèle pour le reproduire aisément, j'ai adapté une macro pour faire un export image de mon graphique ...

VB:
Sub GrapheEnImage()
Dim MyChart As Chart
Set MyChart = ActiveSheet.ChartObjects(1).Chart
MyChart.Export Filename:="E:\_travail_encours\monographie_2020\graph1_commune.png" ', filtername:="PNG"
End Sub

.... j'envisage de faire ce labeur manuellement à défaut de compétences autres.
Je vais copier les trois seuls lignes communales de ma base globale dans la feuille qui génère le graph puis exporter du nom de la commune traitée

A moins que vous puissiez m'apporter une solution pour gagner du temps ?
Merci pour votre appui

Corinne
 

Pièces jointes

  • graphique_en_serie.jpg
    graphique_en_serie.jpg
    38.4 KB · Affichages: 55

Rouge

XLDnaute Impliqué
J'ai beau faire tourner et retourner la macro en pas à pas pour visualiser chaque graphique, je ne vois rien d'anormal, tout semble correct, les graphiques défilent bien par rangée de 3 zones et les étiquettes sont bien présentent à chaque fois, ou alors j'ai mal compris votre problème.
 

cocro

XLDnaute Junior
Incompréhensible en effet ... car de mon coté, j'ai beau faire tourner la macro et à chaque fois, les étiquettes disparaissent
je définis mon graphique, je lance la macro et une fois terminée, je vois la dernière commune avec les étiquettes. ce sont les deux seuls graphiques qui se voient affublés d'étiquettes.

j'ai enregistré de nouveau mon fichier avec extension xlsm. Même résultat
 

Pièces jointes

  • 99000.png
    99000.png
    7.5 KB · Affichages: 12
  • CC-PC.png
    CC-PC.png
    7.4 KB · Affichages: 11
  • cc.png
    cc.png
    8.7 KB · Affichages: 12
  • tableau_graphique2_help.xlsm
    54.7 KB · Affichages: 3

Rouge

XLDnaute Impliqué
J'ai mis un point d'arrêt sur la ligne "Doevents", et je fais tourner la macro et tout est normal.
Faites de-même, et dites-moi à partir de quelle valeur de "i", le problème se présente.
Chez-moi tout est normal, la preuve en vidéo.

cocro.gif
 

Rouge

XLDnaute Impliqué
"le point arrêt en F9 stoppe la macro." c'est le but recherché et pour continuer, faites F5 à chaque arrêt sur la ligne, ainsi vous verrez tous les graphiques défiler.
Par contre, mettez en commentaire la ligne "
MyChart.Export Filename:="E:\_travai_encours\graphique1\" & commune & ".png", pour ne pas enregistrer à chaque passage
"
 

cocro

XLDnaute Junior
une piste ... car c'est certainement lié à mon pc

j'ai modifié mon graph en barre horizontal.
lancé la macro, tjs bloqué sur "DoEvents".
F5 pour faire le second graphique ... me renvoie l'histogramme !

j'ai copié les données dans un nouveau fichier, recréé le graphique et appliqué la macro
même résultat.
 

Rouge

XLDnaute Impliqué
F5 pour faire le second graphique ... me renvoie l'histogramme ! C'est normal, si vous changez de graphique il faut aussi le changer dans la macro

remplacez la ligne
ActiveChart.ChartType = xlColumnClustered

par celle-ci
ActiveChart.ChartType = xlBarClustered
 

cocro

XLDnaute Junior
Mais Oui bien sur, pas vigilante sur ce coup là
Bon, nouvelle tentative. Résultats très surprenant :
étiquettes OK pour comm1, 2, 5 ,6, 7, 8, 9 et 10
rien pour les autres
j'ai beau regardé les lignes, je ne vois pas ce qui peut influencer cela
 

Rouge

XLDnaute Impliqué
Recopié ce code (code avec l'ajout forcé des étiquettes)
VB:
Sub Graphique2011()
    Dim DerLig As Long, i As Long
    DerLig = Range("B" & Rows.Count).End(xlUp).Row
'générer graphique par commune avec 3 zones à metre en scène
'66 communes enquêtées en 2011
    For i = 3 To DerLig - 2 Step 3
        commune = Cells(i, "A")
        ActiveSheet.ChartObjects(1).Activate
        Set MyChart = ActiveSheet.ChartObjects(1).Chart
        ActiveChart.SetSourceData Source:=Range("Feuil2!$C$1:$I$2,Feuil2!$C" & i & ":$I" & i + 2)
        ActiveChart.ChartType = xlColumnClustered
        For j = i To 3
            ActiveChart.SeriesCollection(j).ApplyDataLabels
        Next j
        MyChart.Export Filename:="E:\__travail_encours\commerce\graphique2\" & commune & ".png"
        
        DoEvents 'attendre que les opérations précédentes soient terminées avant de passer à la suivante
    Next i
End Sub
 

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45