Exporter des graphiques d'un fichier excel en images

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 912 fois - Téléchargée 20 fois

Contenu du snippet

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

Source / Exemple :


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

A voir également

Ajouter un commentaire

Commentaires

cs_cmoii
Messages postés
1
Date d'inscription
mercredi 10 juillet 2013
Statut
Membre
Dernière intervention
10 juillet 2013

J'ai trouvé l'erreur du script présenté en haut !
Il s'agit de la variable "i" qui n'est pas remise à 0 dans la première boucle du for.
Voici un code SANS erreur qui extrait au format GIF TOUS les graphiques de TOUS les onglets du fichier. Ce fichier Excel est à convertir en .XLSM

' -----------------------------------------------------------
' DEBUT

Sub ExportGraph()

' Chemin où l'on veut exporter les graphiques
Destination = "C:\Users\moi\Desktop"

' 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
i = 0
' On écrit 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
' Sélection d'un graphique
Sheets.ChartObjects(i).Activate
NomGraph = ActiveChart.Name
' On affiche le nom du graphique exporté
'MsgBox NomGraph

' On lance la procédure d'export
ActiveChart.Export Filename:=Destination & NomGraph & ".gif", FilterName:="GIF"
Next
Next
End Sub

' -----------------------------------------------------------
' FIN

Il manquait "i=0". Testé avec succès le 10/07/2013 dans un fichier .XLSM.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
l'erreur ne semble pas venir du type de variable...
ca ressemble plutot à un "pas de ActiveWorkBook"
Mohamedyounsi
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
2 avril 2008

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.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
As Object:

Dim oSheet As Object
Mohamedyounsi
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
2 avril 2008

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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.