Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXPORTER DES GRAPHIQUES D'UN FICHIER EXCEL EN IMAGES


Information sur la source

Catégorie :VBA Classé sous : graphique, excel, export, graphe, image Niveau : Débutant Date de création : 23/05/2007 Date de mise à jour : 24/05/2007 09:36:35 Vu : 9 144

Note :
Aucune note

Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

Description

Voila,
ce code parcours toutes les feuilles du fichier Excel ouvert, et exporte tous les graphiques au chemin choisi.
 

Source

  • Sub ExportGraph()
  • ' Déclaration des variables
  • Dim Sheets As Variant
  • Dim NomSheet As String
  • Dim Graph As Variant
  • Dim NomGraph As String
  • Dim Fich As String
  • Dim i As Byte
  • ' Boucle parcourant les feuilles
  • For Each Sheets In ActiveWorkbook.Sheets
  • NomSheet = Sheets.Name
  • ' On ecrit dans la boite de message le nom de la feuille
  • MsgBox NomSheet
  • ' On parcours les graphiques de la feuille
  • For Each Graph In Sheets.ChartObjects
  • i = i + 1
  • ' Selection d'un graphique
  • Sheets.ChartObjects(i).Activate
  • NomGraph = ActiveChart.Name
  • ' On affiche le nom du graphique exporté
  • MsgBox NomGraph
  • ' Chemin où l'on veut exporter les graphiques
  • Fich = "c:/Chemin/"
  • ' On lance la procédure d'export
  • ActiveChart.Export Filename:=Fich & NomGraph & ".gif", FilterName:="GIF"
  • Next
  • Next
  • End Sub
Sub ExportGraph()

    ' Déclaration des variables
    Dim Sheets As Variant
    Dim NomSheet As String
    Dim Graph As Variant
    Dim NomGraph As String
    Dim Fich As String
    Dim i As Byte
    
    ' Boucle parcourant les feuilles
    For Each Sheets In ActiveWorkbook.Sheets
        NomSheet = Sheets.Name
        ' On ecrit dans la boite de message le nom de la feuille
        MsgBox NomSheet
        ' On parcours les graphiques de la feuille
        For Each Graph In Sheets.ChartObjects
            i = i + 1
            ' Selection d'un graphique
            Sheets.ChartObjects(i).Activate
            NomGraph = ActiveChart.Name
            ' On affiche le nom du graphique exporté
            MsgBox NomGraph
            ' Chemin où l'on veut exporter les graphiques
            Fich = "c:/Chemin/"
            ' On lance la procédure d'export
            ActiveChart.Export Filename:=Fich & NomGraph & ".gif", FilterName:="GIF"
        Next
    Next
End Sub

Conclusion

On peut choisir le format de l'image : au lieu de mettre .gif/GIF, on peut mettre .jpg/JPEG.
Ce sont les deux seuls que je connait et qui réussisse.
N'hésiter pas a approfondir les connaissances de cette source!!
 

Historique

24 mai 2007 09:36:35 :
Changement de code : selection d'un graphique

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 23/05/2007 17:09:15 administrateur CS

copie a revoir...
variable mal nommée, pas typées, chemin en dur
tu exportes toujours les graphs de la feuille active (ta boucle sur les feuille ne sert a rien)

etc.

signaler à un administrateur
Commentaire de Renfield le 23/05/2007 17:19:27 administrateur CS

ton .Activate n'est pas utile, tu peux directement demander la propriété Chart de ton CharObject obtenu via ChartObjects(i).



en gros, ton code pourrait être :


Private Declare Function MkDir Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Sub test()
    ExportGraphs "C:\test"
End Sub

Sub ExportGraphs(ByVal vsDestPath As String)
Dim oSheet As Worksheet
Dim i As Long
    If Right$(vsDestPath, 1) <> "\" Then
        vsDestPath = vsDestPath & "\"
    End If
    
    MkDir vsDestPath
    
    For Each oSheet In ActiveWorkbook.Sheets
        ' On parcours les graphiques de la feuille
        For i = 1 To oSheet.ChartObjects.Count
            With oSheet.ChartObjects(i).Chart
                .Export vsDestPath & .Name & ".gif", "GIF"
            End With
        Next i
    Next oSheet
End Sub

signaler à un administrateur
Commentaire de roro59650 le 24/05/2007 09:38:33

Bonjour,
j'ai changé le code pour exporter les graphes de la feuille parcourue.
Si j'enleve le .Activate du graphique, je ne vois pas comment afficher son nom dans la boite de message.
Apres, pour les variables, j'ai fait ce que j'ai pu, je sais que ma fonction est loin d'être parfaite, mais elle marche.
On peut toujours faire mieux...

signaler à un administrateur
Commentaire de Renfield le 24/05/2007 09:48:22 administrateur CS

je répète :
"ton .Activate n'est pas utile, tu peux directement demander la propriété Chart de ton CharObject obtenu via ChartObjects(i)."

sans le Activate, donc :
            NomGraph = Sheets.ChartObjects(i).Chart.Name


d'où mon code :
            With oSheet.ChartObjects(i).Chart
                .Export vsDestPath & .Name & ".gif", "GIF"
            End With


au fait, sous Windows, les chemins c'est avec des '\', pas des '/' ^^


signaler à un administrateur
Commentaire de lermite222 le 29/05/2007 16:19:39

bonjour,
Je ne commenterais pas le code mais ce qui m'a interressé c'est la possibilité d'exporté l'image d'un graph.
Question dernièrement posée sur un forum et auquel je n'ai pu répondre.
Merci de l'info
A+
louis

signaler à un administrateur
Commentaire de PhilippeF66 le 19/06/2007 18:21:02

Bonjour à tous,
le problème de ce code (dans mes applications) est que quelle que soit la façon dont j'arrive à la ligne "export" (mon contexte de code est différent), la méthode export provoque une erreur 1004...
rien à faire pour passer outre
idem avec la méthode SaveAS
"y'a queq'chose qui cloche" comme disait B. Vian, mais quoi ?

signaler à un administrateur
Commentaire de roro59650 le 20/06/2007 09:59:11

Bonjour,
moi, il m'a fallu deux jours pour trouver la bonne méthode, mais c'est assez vieux,lol.
Essaye peut-être avec un ChartObjects(i).Export, enfin je sais pas trop.
Je suis pas spécialisté d'Excel, désolé.
J'espère que Renfield saura te répondre!!

Roro

signaler à un administrateur
Commentaire de Renfield le 20/06/2007 22:51:15 administrateur CS

quel message, l'erreur 1004 ?

signaler à un administrateur
Commentaire de PhilippeF66 le 21/06/2007 01:06:07

Bonsoir,
Maintenant, l'erreur est systématiquement 438, méthode non gérée par l'objet. Et pourtant j'ai bien coché les librairies objets correspondantes (notamment Word) dans le sous-menu Références...
Je m'en suis évidemment sorti avec du copié-collé manuel, mais sur le fond, j'aimerais bien trouver la solution.
Merci.

signaler à un administrateur
Commentaire de Renfield le 21/06/2007 08:08:37 administrateur CS

Je pense que le chemin du gif n'est pas correct.
qu'a tu mis ?

quelques pistes, pour tester ........


quellle version d'office ?

est tu admin de ton poste ?
si non, est-ce que tu peux tenter en passant avec un  compte admin ?

le chemin du gif est il correct ?
le fichier gif existe peut etre (lecture seule ou non) et empeche la recreation
peut etre une histoire de droit dans le repertoire cible

as tu essayé mon code, ou celui de roro59650

le FileName ne peut exceder 255 caractères

aurais tu un AddIn sur ton Office, qui pourrais empecher l'export ?

esssaye d'exporter en jpg plutot qu'en gif

as tu excel 2007 qui cohabiterais avec ton excel classsique ?

je te laisse consulter :
http://groups.google.com/groups?q=chart+export+1004&start=0&hl=fr&

signaler à un administrateur
Commentaire de oliv_def le 28/06/2007 11:50:14

En conclusion de tout ca : quel est le programme qui fonctionne et incorporable ds VBA excel SVP ?
Merci d'avance : ca m'interesse !!!

signaler à un administrateur
Commentaire de Renfield le 29/06/2007 01:13:07 administrateur CS

fais le test, c'est le plus simple :p

signaler à un administrateur
Commentaire de oliv_def le 29/06/2007 08:51:06

Ok je viens de faire le test et ton programme fonctionne tres bien :-) !!!
Par contre : quand le graphique est inséré non pas dans une feuille mais constitue directement une feuille : ca ne fonctionne pas ! Plantage sur la ligne " Next oSheet". Que peut on faire ce serait qd même pas mal interessant que ca fonctionne pour tous les graphs ;-), je dis ca je dis rien...

signaler à un administrateur
Commentaire de Renfield le 29/06/2007 09:39:56 administrateur CS

les modifications ne sont pas très lourdes...




Private Declare Function MkDir Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Sub test()
    ExportGraphs "C:\test"
End Sub

Sub ExportGraphs(ByVal vsDestPath As String)
Dim oSheet As Object
Dim i As Long
    If Right$(vsDestPath, 1) <> "\" Then
        vsDestPath = vsDestPath & "\"
    End If
    
    MkDir vsDestPath
    
    For Each oSheet In ActiveWorkbook.Sheets
        If TypeOf oSheet Is Worksheet Then
            ' On parcours les graphiques de la feuille
            For i = 1 To oSheet.ChartObjects.Count
                With oSheet.ChartObjects(i).Chart
                    .Export vsDestPath & .Name & ".gif", "GIF"
                End With
            Next i
        ElseIf TypeOf oSheet Is Chart Then
            With oSheet
                .Export vsDestPath & .Name & ".gif", "GIF"
            End With
        End If
    Next oSheet
End Sub

signaler à un administrateur
Commentaire de oliv_def le 29/06/2007 10:08:41

Parfait :-) !

En tout cas ca me sera tres util !

signaler à un administrateur
Commentaire de PhilippeF66 le 02/07/2007 21:14:09

Merci Renfield,
J'ai été absent qqs jours et n'ai pu répondre.
La même erreur se produit dans les mêmes circonstances, que je sois sur mon PC professionnel (je ne suis pas administrateur et il est en réseau) ou que je sois sur mon PC personnel dont je suis administrateur.
J'utilise Excel 2003 (suite Office Pro 2003).
Il n'y a pas de problème sur le nom du fichier image, ni sur son chemin, ni sur la longueur du nom de l'ensemble chemin + fichier.
L'erreur existe que j'essaie en gif ou en jpg, quant à l'AddIn, je ne sais...
L'erreur existe tant avec mon code qu'avec le tien ou celui de Roro...
A+

signaler à un administrateur
Commentaire de nonka le 22/02/2008 18:22:32

Franchement, TOP la macro !!

signaler à un administrateur
Commentaire de Mohamedyounsi le 02/04/2008 11:36:49

Salut,
erreur d'exécution 91
"variable objet ou variable bloc With non définie"
ma question c'est quelle est ke type de déclaration de l'objet oSheet?
set oSheet = new .....

Merci de me répondre.

signaler à un administrateur
Commentaire de Renfield le 02/04/2008 13:17:17 administrateur CS

As Object:

Dim oSheet As Object

signaler à un administrateur
Commentaire de Mohamedyounsi le 02/04/2008 14:42:03

salut,

j'ai déclaré oSheet comme objet.
mais le même problème qui persiste
erreur d'exécution 91
"variable objet ou variable bloc With non définie" le problème est dans "ActiveWorkbook.sheets"

Merci de me répondre.

signaler à un administrateur
Commentaire de Renfield le 02/04/2008 15:05:49 administrateur CS

l'erreur ne semble pas venir du type de variable...
ca ressemble plutot à un "pas de ActiveWorkBook"

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

faire une image d'un graphe EXCEL sur un autre document excel [ par JPLdeT ] LPLde TY a-t-il une solution pour faire une copie (image) d'un graphe qui est sur une feuille EXCEL dans un autre document excel sans que les liens av insérer graphe excel dans imagebox [ par SofieV ] Bonjour,j'ai crée une frame qui permet d'afficher un graphe dans une imagebox selon des paramètres sélectionnés par listboxs.Le problème c'est que je Exporter un graphique excel [ par Draconagi ] Voila j'ai un document excel sur lequel il y a plusieurs tableaux et je g&#233;n&#233;re un graphique &#224; partir de ceux la. Le graphique est sur s Export de ChartObjects [ par nil69 ] Bonjour, je cherche a pouvoir exporter un ChartObject figurant dans une feuille excel. Alors que pour les Charts, il existe une m&#233;thode Export, exportation d'image de zone excel [ par VRL ] Bonjour,Voici mon souci :J'ais un nombre indéfini de fichier excel dans un dossier.Dans ces fichiers excels seul une zone m'interesse (ex: zone S1:AC1 Graphique croisé dynamique [ par helena06 ] Bonjour,c'est mon premier message ici espérant que je ne me trompe pas de rubrique. J'ai un probléme avec les graphiques croisés dynalmiques. En effet Form Access et fichiers Word, Excel, Pdf et Image [ par mozeusg ] Salut à tous,Le problème que j'ai est le suivant.Dans un formulaire access j'ai une liste déroulante de N° de facture, je voudrais qu'après avoir choi excel vba aide sur un graphique [ par celia62 ] tout d'abord bonjour à tous et merci d'avance pour les gens qui prendront le temps de regarder cette question!je vous explique mon problème je travail Graphique VBA [ par SeKo54 ] Bonjour,Je cherche à créer un graphique à l'aide de VBA. Sous l'ancienne version d'Excel je procédais ainsi :Charts.AddActiveChart.ChartType = xlXYSca Séléctionner graphique Excel [ par Marneus73 ] Bonjour à tous, J'ai un petit propblème avec la macro d'excel. Je voudrais séléctionner un graphique et changer la couleur des barres (c'est un hist


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.