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 :

Qualité des Exports de Graphiques Excel ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut Qualité des Exports de Graphiques Excel ?
    Bonjour,

    J'utilise Excel pour traiter des données et générer des graphiques pour une publication sur un site internet. Mon problème, les graphiques que je génère sous Excel et qui ont une très bonne qualité à l'écran (finesse des courbes, résolutions, ...) ont une qualité très très mauvaise (résolution de l'ordre de 600x400 pixel) dès que j'essaye de générer une page html ou que je tente de faire un export du graphique vers un format d'image (une simple copie d'écran me donnerai un résultat incomparablement meilleur...)

    Y a-t-il moyen d'améliorer la qualité des exports (en code VBA car la génération doit être automatisée compte tenu du nombre d'utilisateurs et du nombre de fichiers qui génèrent ces graphiques) ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essayez ceci pour voir:

    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
     
    Sub dddd()
     
    Dim Graphe As ChartObject, w As Integer, h As Integer
     
    Set Graphe = ChartObjects("Graphique 1") 'Nom du Graphique en question
    w = Graphe.Width 'Largeur initiale
    h = Graphe.Height 'Hauteur initiale
     
    With Graphe
        .Width = w * 2 ' Largeur souhaité
        .Height = h * 2 ' Hauteur souhaité
    End With
     
    'With Graphe
    '.CopyPicture
    'End With
     
    ' code pour imprimer, coller l'image ou autre
     
    With Graphe
        .Width = w ' Remise de la Largeur initiale
        .Height = h ' Remise de la Hauteur initiale
    End With
     
    End Sub
    Le graphe change de taille uniquement le temps de faire ce que vous avez à faire, mais reviens comme il était auparavant à la fin de la Macro.

    Vous pouvez sinon, écrire la taille initiale du tableau dans une cellule pour si jamais le code plante après avoir redimensionné le graphique.

    Enfaite, il génère une taille immense pour ma part qui ne correspond pas à la taille du grahique.

    CopyPicture a un rapport avec la taille du graphique sous Excel mais ne correspond pas à sa taille au niveau absolu. Sinon, un Graphe.Copy tout court donnera une définition plus proche de la taille sous Excel certainement en tenant compte du ppp Windows (96 par défaut).


    P.S.: Finalement, oubliez le redimensionnement et utilisez plutôt CopyPicture qui donnera une taille de très bonne qualité.
    Dernière modification par Invité ; 08/07/2013 à 15h12.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Merci pour la proposition mais cela ne marche pas :

    Mon graphique est dans un onglet spécifique (de type "graphique" ?)
    Donc je n'arrive pas à le sélectionner de façon spécifique autrement que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("Graph2").Select
        ActiveChart.ChartArea.Select
    J'accède bien en lecture aux propriétés width et height (577 par 357 soit très basse résolution) mais celles-ci ne sont pas modifiables :

    Sur les lignes .width = w * 2 j'ai le message d'erreur Excel n° -2147024809 ??? La forme est verrouilllée et ne peut pas être redimensionnée

    J'ai bien verifié, je n'ai aucune protection active ni sur la Sheet, ni sur le graph...

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub SaveAs_Image(Feuille As Worksheet, Non As String, fichier As String)
    For Each MyObject In Feuille.Shapes
        If MyObject.Name = Non Then
            MyObject.Chart.Export Filename:=fichier, FilterName:="GIF"
            Exit Sub
        End If
    Next
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Bon, j'ai trouvé un contournement :

    Au lieu d'utiliser une sheet "Graph" (dont la qualité de l'export html est mauvaise en résolution), j'intègre un graphique dans une sheet standard (là la graphique est redimensionnable facilement et la qualité de l'export html nettement meilleur...

    Merci

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

Discussions similaires

  1. Exporter tableau/graphique excel en image Word avec legende auto
    Par hedidev1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2015, 13h29
  2. [XL-2003] Exporter un graphique Excel vers un document Word
    Par Yvanou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2012, 15h49
  3. graphique excel (axe des X)
    Par marjaco dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 18h05
  4. Exporter des colonnes précises dans excel
    Par uloaccess dans le forum Access
    Réponses: 8
    Dernier message: 30/12/2005, 15h16
  5. Réponses: 1
    Dernier message: 01/11/2005, 12h04

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