Enregistrer des graphiques à la chaine

Bonjour à tous,

Je dois générer 300 graphiques sous excel, que je dois ensuite intégrer dans un publipostage. J'ai lu que la seule solution pour les intégrer dans le publipostage est d'abord de les enregistrer en tant qu'image, pour ensuite les intégrer. (si vous avez une solution plus simple, n'hésitez pas :-) )

Maintenant, comment enregistrer ces 300 graphiques rapidement ?

Ces graphiques sont basés sur un seul et même modèle, mais avec 300 entreprises différentes, ce qui va donc changer l'ensemble des réponses.

Comme vous le voyez, une seule cellule est amenée à changer, avec le nom de l'entreprise. Tout le reste changera automatiquement.

Pourrait-on créer une macro afin d'enregistrer sous forme d'image les 300 graphiques à la chaine?

Merci pour votre aide !

bonjour Mariesg,

les jpgs se trouvent dans le même chemin que le fichier excel et si nécessaire vous pouvez donner un nom plus spécifique

Sub Graph()
     aa = Sheets("Feuil1").Range("A1").CurrentRegion.Resize(, 3).Value
     With Sheets("Feuil2")
          For i = 3 To UBound(aa)
               .Range("A2").Resize(, 3).Value = Array(aa(i, 1), aa(i, 2), aa(i, 3))
               .ChartObjects(1).Chart.Export ThisWorkbook.Path & "\" & aa(i, 1) & ".jpg"
          Next
     End With
End Sub

Bonjour Bart,

Merci pour ton aide.

Malheureusement, dès que j'essaie d'exécuter la macro, un message d'erreur apparait et cela concerne cette ligne :

.ChartObjects(1).Chart.Export ThisWorkbook.Path & "\" & aa(i, 1) & ".jpg"

capture d e cran 2023 06 27 a 12 08 28

Sais-tu quel est le problème et comment le régler ?

Merci d'avance :-)

re,

maintenant avec fichier que vous devez sauvegarder avant d'exécuter la macro (autrement il n'aura pas de chemin connu). Y-a-t-il au minimum 1 image sauvegardé ou aucun (autrement, je dois ajouter un petit délai entre chaque image)

Merci !

Que voulez-vous dire par "Y-a-t-il au minimum 1 image sauvegardé" ?

Nous commençons avec 0 image dans excel, et l'idéal serait d'avoir les 300 faites.

Petit souci, le même message d'erreur apparait sur l'écran... et quand j'ouvre le fichier, il est indiqué qu'ActiveX n'est pas supporté.

Serait-il possible de plutôt enregistrer ces graphiques automatiquement sous format png ou jpeg, dans le même dossier que là où est le fichier excel? Car l'autre solution n'a pas l'air de marcher sur ma version :-(

Merci :-)

re, le chemin d'un MAC, il y a des "/" au lieu de "\" je crois, non ?

un raccourci CTRL+SHIFT(Maj)+G pour lancer cette macro

Sub Graph()
     s = "/"                                 '  \ pour PC et / pour MAC ?
     aa = Sheets("Feuil1").Range("A1").CurrentRegion.Resize(, 3).Value
     With Sheets("Feuil2")
          For i = 3 To UBound(aa)
               .Range("A2").Resize(, 3).Value = Array(aa(i, 1), aa(i, 2), aa(i, 3))
               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".png"
               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".jpeg"
          Next
     End With
End Sub

Toujours le même bug, sur .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".png" cette fois

Dois-je faire une manipulation spéciale avant de lancer la macro?

re, je ne le sais pas, j'ai ajouté 3 lignes, une des 3 causera une erreur, laquelle ?

Sub Graph()
     s = "/"                                 '  \ pour PC et / pour MAC ?
     aa = Sheets("Feuil1").Range("A1").CurrentRegion.Resize(, 3).Value
     With Sheets("Feuil2")
          For i = 3 To UBound(aa)
               .Range("A2").Resize(, 3).Value = Array(aa(i, 1), aa(i, 2), aa(i, 3))

               Set chrt1 = .ChartObjects(1)  'quelle ligne causera une erreur  ?
               Set chrt2 = .ChartObjects(1).Chart
               MsgBox ThisWorkbook.Path & s & aa(i, 1) & ".png"

               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".png"
               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".jpeg"
          Next
     End With
End Sub

cette fois, j'arrive à créer le graphique pour l'entreprise 1, mais ensuite la même erreur apparait, et c'est cette ligne qui pose souci :

.ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".png"

Merci pour ta patience

re,

le graphique se met à jour avec la ligne

 .Range("A2").Resize(, 3).Value = Array(aa(i, 1), aa(i, 2), aa(i, 3))     'ici ajustement du graph

autrement changer ce s, une fois avec "/" et une fois comme "\" ...

Sub Graph()
     s = "/"                                 '  \ pour PC et / pour MAC ?
     aa = Sheets("Feuil1").Range("A1").CurrentRegion.Resize(, 3).Value
     With Sheets("Feuil2")
          For i = 3 To UBound(aa)
               .Range("A2").Resize(, 3).Value = Array(aa(i, 1), aa(i, 2), aa(i, 3))     'ici ajustement du graph

               Set chrt1 = .ChartObjects(1)
               Set chrt2 = .ChartObjects(1).Chart
               MsgBox ThisWorkbook.Path & s & aa(i, 1) & ".png"
               ChDir ThisWorkbook.Path

               t = Timer
               t1 = Timer + 0.25
               Do
                    DoEvents
               Loop While t <= Timer And Timer < t1

               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".png"
               .ChartObjects(1).Chart.Export ThisWorkbook.Path & s & aa(i, 1) & ".jpeg"
          Next
     End With
End Sub

Enfait c'est vraiment l'enregistrement du graphique qui bloque, ça indique que je n'ai pas l'autorisation...

Serait-il de trouver une autre solution, en indiquant un nom de chemin comme lieu pour l'enregistrement des docs par exemple?

Grand merci :-)

re,

j'arrête ici et demande l'aide au reste de ce site. Je ne le sais plus, je ne vois rien ..

ça marche merci :-)

Rechercher des sujets similaires à "enregistrer graphiques chaine"