IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Controler la taille d'un graphique transformé en image .JPG


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut Controler la taille d'un graphique transformé en image .JPG
    Bonjour tout le monde !

    Je suis face à une problème et je compte sur vous pour m'aider à le résoudre

    J'ai écrit une macro afin de transformer un graphique d'une feuille excel en image, et d'enregistrer cette image en format .gif et en format .jpg sur mon disque dur. J'ai donc 2 fichiers images qui sont créés par graphique.
    Maintenant je souhaiterai contrôler la taille de l'image créé en format .jpg, afin d'avoir une image plus grande que celle enregistré par défaut en format .gif.

    Savez-vous comment procéder ?

    Je précise que je suis totalement novice en VBA... Ci dessous ma macro qui me créé bien 2 fichiers images par graphique excel, manque plus qu'à rajouter la ligne de code pour controler la taille du fichier .jpg, c'est là que j'ai besoin d'aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub ExportChart()
         '   Export a selected chart as a picture
        Const sSlash$ = "/"
        Const sPicTypeJPG$ = ".jpg"
        Const sPicTypeGIF$ = ".gif"
        Dim sChartName$
        Dim sPath$
        Dim sBook$
        Dim objChart As ChartObject
                  On Error Resume Next
         '   Test if there are even any embedded charts on the activesheet
         '   If not, let the user know
        Set objChart = ActiveSheet.ChartObjects(1)
        If objChart Is Nothing Then
            MsgBox "No charts have been detected on this sheet", 0
            Exit Sub
        End If
                   '   Test if there is a single chart selected
        If ActiveChart Is Nothing Then
            MsgBox "You must select a single chart for exporting ", 0
            Exit Sub
        End If
     
         sChartName = Left(ActiveWorkbook.Name, 6) & "-trend"
     
     
              '   Test for Cancel button
        If sChartName = "False" Then
            Exit Sub
        End If
              '   If a name was given, chart is exported as a picture in the same
         '   folder location as their current file
        sBook = ActiveWorkbook.Path
        sPathGIF = sBook & sSlash & sChartName & sPicTypeGIF
        sPathJPG = sBook & sSlash & sChartName & sPicTypeJPG
        ActiveChart.Export Filename:=sPathGIF, FilterName:="GIF"
        ActiveChart.Export Filename:=sPathJPG, FilterName:="JPG"
     
         End Sub

    Merci !!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Peut-être une réponse ici : http://boisgontierjacques.free.fr/pa.../lesimages.htm
    Cdt

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour, bonjour le forum
    J'ai eu un problème similaire j'ai trouvé une solution grâce au forum.
    En fait il m'a fallu préciser l'étendue des cellules où je voulais placer mon graphique, pour moi une courbe.
    Il faut donc ajouter au début de ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim Curve As Worksheet
                Set Curve = ThisWorkbook.Sheets("Curve")
                Dim Grph As ChartObjects
                Dim Emplacement As Range
                Dim G As Integer
                Set Grph = Curve.ChartObjects()
                Set Emplacement = Range("B2:P38")
    Ceci a positionné et dimensionné mon graphique comme je le souhaitais

    Dans une autre procédure j'ai enregistré directement mon graphique en jpg pour ensuite l'insérer dans un UserForm

    Pour l'enregistrement voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Grph = Curve.ChartObjects(1).Chart
    Grph.Export Filename:="C:\Ton Chemin\Graphique1.jpg", filtername:="JPG"
    J’espère que cela répond à ta demande
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut
    ok merci beaucoup ! je vais tester et je reviens vers vous

  5. #5
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Rebonjour,

    J'ai oublié une partie du code, voici mon code avec ce qui peut t’intéresser en bleu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Curve_Actual()
    
                Dim Curve As Worksheet
                Set Curve = ThisWorkbook.Sheets("Curve")
                Dim Grph As ChartObjects
                Dim Emplacement As Range
                Dim G As Integer
                Set Grph = Curve.ChartObjects()
                Set Emplacement = Range("B2:P38")
                Curve.Select
                G = ActiveSheet.ChartObjects.Count
                If G > 0 Then
                ActiveSheet.ChartObjects(G).Delete
                End If
                ActiveSheet.Shapes.AddChart.Select
                ActiveChart.ChartType = xlLine
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(1).Name = "=""Cum. Planned"""
                ActiveChart.SeriesCollection(1).Values = "=Data!$J$8:$BZ$8"
                ActiveChart.SeriesCollection(1).XValues = "=Data!$J$6:$BZ$6"
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(2).Name = "=""Cum. Actual"""
                ActiveChart.SeriesCollection(2).Values = "=Data!$J$14:$BZ$14"
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(3).Name = "=""Cum. Forecast"""
                ActiveChart.SeriesCollection(3).Values = "=Data!$J$20:$BZ$20"
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(4).Name = "=""Planned"""
                ActiveChart.SeriesCollection(4).Values = "=Data!$J$7:$BZ$7"
                ActiveChart.SeriesCollection(4).AxisGroup = 2
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(5).Name = "=""Actual"""
                ActiveChart.SeriesCollection(5).Values = "=Data!$J$13:$BZ$13"
                ActiveChart.SeriesCollection(5).AxisGroup = 2
                ActiveChart.SeriesCollection.NewSeries
                ActiveChart.SeriesCollection(6).Name = "=""Forecast"""
                ActiveChart.SeriesCollection(6).Values = "=Data!$J$19:$BZ$19"
                ActiveChart.SeriesCollection(6).AxisGroup = 2
                ActiveChart.Axes(xlValue).Select
                ActiveChart.Axes(xlValue).MaximumScale = 1
                ActiveChart.ChartGroups(2).GapWidth = 0
                ActiveChart.SeriesCollection(4).ChartType = xlColumnClustered
                ActiveChart.SeriesCollection(5).ChartType = xlColumnClustered
                ActiveChart.SeriesCollection(6).ChartType = xlColumnClustered
                
                With Grph
                .Left = Emplacement.Left
                .Top = Emplacement.Top
                .Height = Emplacement.Height
                .Width = Emplacement.Width
                End With
    End Sub
    Puis dans un autre module, ou à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Grph = Curve.ChartObjects(1).Chart
    Grph.Export Filename:="C:\Ton Chemin\Graphique1.jpg", filtername:="JPG"
    Désolé pour l'oubli

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, tout était déjà dans la FAQ, il suffisait d'être curieux et de chercher
    http://excel.developpez.com/faq/?pag...ionneGraphique
    http://excel.developpez.com/faq/?pag...ursgraphsImage
    etc...

  7. #7
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, tout était déjà dans la FAQ, il suffisait d'être curieux et de chercher
    http://excel.developpez.com/faq/?pag...ionneGraphique
    http://excel.developpez.com/faq/?pag...ursgraphsImage
    etc...
    kiki29,
    C'est vrai mais c'est tellement plus rapide de poster et puis cela peut être gratifiant de pouvoir aider les autres pour ceux qui répondent...
    Cela permet également de revenir sur des points abordés il y a un certains temps et se le remémorer..
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajuster la taille d'un graphique à une zone image Userform
    Par geonosis47 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/09/2014, 14h34
  2. Taille légende de graphique
    Par Zinemon dans le forum IHM
    Réponses: 4
    Dernier message: 11/07/2007, 14h14
  3. [Image][Upload] Controler la taille de l'image
    Par cootchy dans le forum Multimédia
    Réponses: 1
    Dernier message: 09/05/2007, 11h22
  4. Controler la taille d'un fichier avant l'envoi
    Par kahya dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/04/2007, 12h45
  5. Contrôler linux depuis XP (mode graphique)
    Par Bweb dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 27/02/2005, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo