begin process at 2010 02 10 01:22:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > EXPORTER DES GRAPHIQUES D'UN FICHIER EXCEL EN IMAGES

EXPORTER DES GRAPHIQUES D'UN FICHIER EXCEL EN IMAGES


 Information sur la source

Note :
Aucune note
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 :11 767

Auteur : roro59650

Ecrire un message privé
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

 Sources de la même categorie

Source avec Zip Source avec une capture METTRE À JOUR MASSIVEMENT L’ACTIVE DIRECTORY par legranche
SUPPRESSION DES DOUBLONS DANS PLAGE EXCEL par ucfoutu
Source avec Zip Source avec une capture SIMULATEUR DE VITESSE. par artgile
Source avec Zip Source avec une capture EDITEUR DE COMANDE VB6 ET VBA EXCEL par artgile
Source avec Zip Source avec une capture VBA EXCEL AFFICHER UN NUANCIER DES COULEURS AFIN DE CHOISIR ... par BILLOTmi

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAGE REFLECT - GÉNÉRER LE REFLET D'UNE IMAGE par Vince300
Source avec Zip Source avec une capture EXPORT TABLEAU EXCEL EN BBCODE par nikovb
Source avec Zip Source avec une capture CAPTURE ECRAN SELECTIVE par cdbi
Source avec Zip Source avec une capture USINE À GAZ EXCEL par odan71

Commentaires et avis

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.

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

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...

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 '/' ^^


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

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 ?

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

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

quel message, l'erreur 1004 ?

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.

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&

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 !!!

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

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

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...

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

Commentaire de oliv_def le 29/06/2007 10:08:41

Parfait :-) !

En tout cas ca me sera tres util !

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+

Commentaire de nonka le 22/02/2008 18:22:32

Franchement, TOP la macro !!

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.

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

As Object:

Dim oSheet As Object

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.

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales