Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 26/08/2008, 10h43   #1 (permalink)
Membre actif
 
Avatar de mat-tech
 
Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
Par défaut Exporter graphique vers image

Bonjour à tous,
j'aimerais exporter 4 graphiques en une seul image, miracle j'ai trouvé exactement le code qu'il me falait dans les Faqs, mais il y a une erreur ...
J'ai 4 graphiques à exporter sur la "Feuil2"

Code :
 
Option Explicit
 
Private Const Fichier As String = "C:\ImageTemp.gif"
   
   
Sub ExporteGIF_GroupeGraphiques()
   Dim Sh As Shape
   Dim Tableau(1 To 4) As String
   Dim i As Integer, Nb As Integer
   'Supprime l'image temporaire si elle existe
   If Dir(Fichier) <> "" Then Kill Fichier
   
    'Boucle sur les 4 premiers graphiques de la feuille active
    For i = 1 To 4
        Tableau(i) = ActiveSheet.ChartObjects(i).Name
    Next
    
    'Regroupe les graphiques
    Set Sh = ActiveSheet.Shapes.Range(Tableau).Group
 
    
    'copie la forme
    Sh.CopyPicture
    'crée un graphique
    With ActiveSheet.ChartObjects.Add(0, 0, _
                        Sh.Width, Sh.Height).Chart
        .Paste 'colle l'image dans graphique
        ' enregistre le graphique au format gif
        .export Fichier, "GIF"
    End With
    
    Nb = ActiveSheet.ChartObjects.Count
    'supprime le graphique
    ActiveSheet.ChartObjects(Nb).Delete
    
    Sh.Ungroup
End Sub
 
 
__________________
mat-tech est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 14h29   #2 (permalink)
Membre actif
 
Avatar de mat-tech
 
Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
Par défaut

Sans doute parceque l'erreur est :
Citation:
Erreur d'exécution '1004'
Ce paramètre n'a pas une valeur valide
Esi je lance le débogage, il stop à la ligne

Citation:
Set Sh = ActiveSheet.Shapes.Range(Tableau).Group
__________________
mat-tech est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 15h52   #3 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Merci d'avoir précisé l'erreur

J'ai ramé sur ce code...je suis parvenu à le faire fonctionner en changeant la déclaration de la variable Tableau de type Variant au lieu de type String
Code :
Dim Tableau(1 To 4) As Variant
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 16h44   #4 (permalink)
Membre actif
 
Avatar de mat-tech
 
Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
Par défaut

Est-il possible, lors de l'enregistrement de l'image d'avoir l'invite 'Enregistrer sous ...', afin de pouvoir choisir le nom et l'endroit où on veut enregistrer l'image ainsi créé ?
__________________
mat-tech est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 17h08   #5 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Un truc de ce style ? (remplace le code initial par celui-ci)
Code :
Option Explicit
   
Sub ExporteGIF_GroupeGraphiques()
Dim Fichier As Variant, Tableau(1 To 4) As Variant
Dim Sh As Shape, i As Integer, Nb As Integer
 
'Boucle sur les 4 premiers graphiques de la feuille active
For i = 1 To 4
    Tableau(i) = ActiveSheet.ChartObjects(i).Name
Next
 
'Regroupe les graphiques
Set Sh = ActiveSheet.Shapes.Range(Tableau).Group
 
'copie la forme
Sh.CopyPicture
 
'crée un graphique
With ActiveSheet.ChartObjects.Add(0, 0, Sh.Width, Sh.Height).Chart
    .Paste 'colle l'image dans graphique
    
    ' enregistre le graphique au format gif
    Fichier = Application.GetSaveAsFilename(fileFilter:="Fichier Image (*.gif), *.gif")
    If Fichier = False Then
        MsgBox "vous avez annulé l'opération" & Chr(10) & "l'image ne sera pas exportée"
    Else
        .Export Fichier, "GIF"
    End If
End With
 
Nb = ActiveSheet.ChartObjects.Count
'supprime le graphique
ActiveSheet.ChartObjects(Nb).Delete
 
Sh.Ungroup
End Sub
Pour info afin de compléter l'explication de la FAQ, quelle version d'Excel utilises-tu ?
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

Dernière modification par fring ; 26/08/2008 à 22h17
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 12h46   #6 (permalink)
Membre actif
 
Avatar de mat-tech
 
Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
Par défaut

Dans le bas de l'image exporter est-il possible d'y inclure le pieds de page de la Feuil d'où ont été copiés les graphiques ?
__________________
mat-tech est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/09/2008, 16h08   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Si c'est toujours d'actualité ...une solution via une zone de texte dans le fichier joint.

test graph.zip
.
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/09/2008, 21h01   #8 (permalink)
Membre actif
 
Avatar de mat-tech
 
Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
Par défaut

Magnifique, c'est exactement la réponse à ma question, merci beaucoup
__________________
mat-tech est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide