Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
    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
    7.5 KB · Affichages: 12
  • CC-PC.png
    7.4 KB · Affichages: 11
  • 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

XLDnaute Junior
j'ai mis en commentaire la ligne ' DoEvents car point arrêt en F9 stoppe la macro.
je ne sais pas faire de vidéo comme vous pour vous montrer qua les graphiques de prennent pas l'étiquette .... seulement le dernier de la série
 

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
Fait selon vos directives.
voici copie des deux images qui s'enchainent, même macro chez vous et chez moi et deux résultats différents
 

Pièces jointes

  • etat_initial.jpg
    178.1 KB · Affichages: 12
  • etat_suivant.jpg
    170.2 KB · Affichages: 11

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
 

cocro

XLDnaute Junior
Merci, aussitôt copié et aussitôt testé.
Stupéfiant, le comportement attendu n'est pas à l'arrivée.

seuls les graphiques 1/2/4 et 11 ont des étiquettes.
Aucune logique au vue des lignes prises en compte.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…