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

IHM Discussion :

Export graphique png [AC-2010]


Sujet :

IHM

  1. #1
    Invité
    Invité(e)
    Par défaut Export graphique png
    Bonjour à tous,

    J'ai un problème avec Access (version 2010):

    J'ai un état dans lequel il y a plusieurs graphiques, générés dynamiquement via un formulaire
    (où on choisit l'année entre autres).

    Je veux pouvoir exporter en png un graphique en cliquant dessus par exemple.

    Je le fais avec ce code :

    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
    Private Sub monGraph_Click()
     
    Dim ocht As Object
    Dim path As String
     
    Set Rpt = Reports("monRapport")
     
    Set ocht = Rpt("monGraph")
     
    path = EnregistrerUnFichier(Rpt.Hwnd, "Enregistrer sous", "monGraphique.png", "")
     
    If (path <> "") Then
        With ocht
            .Export path, "PNG"
           'Sans acOLEClose, bug total d'access :
           'il n 'enregistre plus les modifs, empêche de sauvegarder manuellement, affiche 6 fois de suite la même boîte de dialogue "opération sur le serveur OLE a échouée"
            .Action = acOLEClose
        End With
    End If
     
    Set ocht = Nothing
    Set Rpt = Nothing
    End Sub
    (La fonction EnregistrerUnFichier me permet de choisir un chemin absolu et un nom avec l'explorateur pour sauvegarder le fichier.)

    Le problème est que lorsque j'enregistre le graphique de cette façon il clignote et se "met à jour"
    avec une ancienne version de ce graphique !
    Par exemple je génère le rapport pour l'année 2015, j'exporte le graphique en png, puis le graphique
    change tout seul et affiche des chiffres de l'année 2014. Or je sais qu'avant l'état avait été enregistré
    dans sa version 2014.
    Je voudrais que le graphique ne se modifie pas, qu'il soit juste exporté.

    Merci d'avance pour votre aide
    Dernière modification par Jean-Philippe André ; 10/02/2017 à 15h14.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Au vu du modèle Graph il me semble que tu n'adresse pas le bon objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim oGrp As Object 'Graph.Chart
            Set oGrp = Me.Controls("mongraphique").Object.Application.Chart
            oGrp.Export "c:\monfichier.jpg", "JPEG", True
            set oGrp = nothing
    Le report doit être ouvert en mode Aperçu ou le graph doit être positionné dans un formulaire (c'est le cas ici).

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Invité
    Invité(e)
    Par défaut
    Malheureusement, ça ne marche pas.
    J'obtiens une erreur d'exécution 1004 : 'erreur définie par l'application ou par l'objet'
    au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oGrp.Export "c:\monfichier.jpg", "JPEG", True
    Ensuite, dès que je veux sauvegarder ou fermer le rapport, j'obtiens plusieurs fois de suite :

    Nom : Capture.PNG
Affichages : 405
Taille : 19,7 Ko

    Je ne comprends pas pourquoi j'obtiens ce message car la création et l'affichage des graphiques fonctionnent.

    Je remarque qu'avec le code que tu proposes, l'auto-complétion s'arrête à Set oGrp = Me.Controls("mongraphique") et "oGrp." ne propose rien non plus.
    Est-ce normal ?

    D'autre part, quand je passe en mode 'aperçu avant impression', j'obtiens :

    Nom : Capture2.PNG
Affichages : 333
Taille : 16,5 Ko
    Je n'arrive pas à me débarrasser de ce problème, même en enregistrant le rapport dans un nouveau fichier sous un autre nom comme c'est proposé.
    Dernière modification par LittleWhite ; 26/02/2017 à 18h36. Motif: Balise CODE

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Pour avoir l'autocomplètion il faut être en "early binding" et avoir un typage fort des variables. Si je ne peux pas vérifier la première condition, la deuxième n'est pas remplie.

    Sur la ligne du Dim je t'ai mis le typage fort en commentaire. Mais il faut que tu sois en early.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Tout d'abord merci de ton aide, je pense être sur la bonne piste.
    J'ai simplifié le problème. Je crée un nouveau rapport. J'y crée un simple graphique (access lui donne le nom de "Graphique0").
    Je mets sa propriété "activé" sur "oui" puis j'écris ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
    Option Explicit
     
    Private Sub Graphique0_Click()
     
        Dim ocht As graph.Chart
        Dim path As String
     
        Set ocht = Me.Controls("Graphique0").Object.Application.Chart
        ocht.Export "C:\tmp\grph.jpg", "JPEG", True
     
        Set ocht = Nothing
     
    End Sub
    L'export se produit bien. Le problème est qu'il se produit aussi une erreur qui reste silencieuse tant qu'on n'interagit pas plus avec l'état. Mais dès qu'on veut le fermer ou l'enregistrer (par exemple), access m'envoie ce message plusieurs fois de suite :

    Nom : Capture.PNG
Affichages : 364
Taille : 19,7 Ko

    Je travaille en entreprise, je ne peux pas me permettre de laisser qqch qui bug ainsi.
    Dernière modification par loufab ; 15/02/2017 à 19h16. Motif: balises de code OBLIGATOIRES !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Excusez-moi pour le double post mais j'ai trouvé une solution. Il reste cependant une sorte de bug d'affichage que je n'arrive pas à expliquer.
    Pour éviter que le serveur OLE crash, il faut rajouter la ligne "ocht.Application.Quit".
    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Graphique0_Click()
       Dim ocht As graph.Chart
       Dim path As String
       Set ocht = Me.Controls("Graphique0").Object.Application.Chart
       path = EnregistrerUnFichier(Me.Hwnd, "Enregistrer sous", ".png", "")
       If (path <> "") Then
            ocht.Export path, "PNG"
            ocht.Application.Quit
       End If
       Set ocht = Nothing
    End Sub
    (la fonction "EnregistrerUnFichier" permet de choisir un chemin absolu et un nom avec l'explorateur)

    Cependant il reste un bug d'affichage. Voici comment il se produit:
    1. Je clique sur le graphique, choisit un chemin et un nom, puis exporte le graphique. Tout va bien.
    2. Je re-clique sur le même graphique l'explorateur s'affiche mais je peux voir que derrière, le graphique a changé pour une version antérieure (avec des données différentes). Si je continue, il va m'enregistrer un mauvais graphique puisqu'il l'a changé en cours de route. Si clique sur "annuler" le graphique revient à son état "normal".
    Dernière modification par loufab ; 15/02/2017 à 19h17. Motif: balises de code OBLIGATOIRES !

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    en effet le quit est important, comme j'ai tiré le code d'un projet plus vaste que ce simple export il est passé à la trappe. désolé.

    il me semble avoir eu ce comportement, je vais regarder dans le projet.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Export graphique vers Excel
    Par sweetmercy dans le forum VBA Access
    Réponses: 7
    Dernier message: 20/01/2011, 10h38
  2. export graphique croisé dynamique
    Par pancratee dans le forum VBA Access
    Réponses: 0
    Dernier message: 03/03/2010, 12h28
  3. Exporter graphique vers image
    Par mat-tech dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/09/2008, 21h01
  4. Export graphique vers word
    Par e040098k dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/08/2008, 23h17
  5. Exporter graphique vers word
    Par Junior_jef dans le forum Access
    Réponses: 1
    Dernier message: 31/08/2006, 11h25

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