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

Access Discussion :

Export JPG sur objet graphique - Pb OLE


Sujet :

Access

  1. #1
    Invité
    Invité(e)
    Par défaut Export JPG sur objet graphique - Pb OLE
    Bonjour,

    Je souhaite effectuer des exports JPG de graphes contenu dans des états.

    Pour ce faire, et en m'appuyant sur différentes sources récupérées à droite et à gauche, j'utilise le code suivant :

    ____________

    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
     
    Public Sub Export_JPG(NomEtat As String, RepertoireJPG)
     
    Dim GraphName As String
    Dim oleGrf As Object
     
    GraphName = RepertoireJPG & "Exports Graphiques\" & NomEtat & " - " & _
     Format(Year(Now) Mod 100, "00") & Format(Month(Now), "00") & _
     Format(Day(Now), "00") & ".jpg"
     
    DoCmd.OpenReport NomEtat, acViewPreview, , , acHidden
    Set oleGrf = Reports(NomEtat).IndépendantOLE0.Object
    oleGrf.Export FileName:=GraphName
    Set oleGrf = Nothing
    DoCmd.Close acDefault, NomEtat, acSaveNo
     
    End Sub
    ____________

    Malheureuseusement, ça ne fonctionne qu'à moitier :
    - l'ouverture des Etats en mode caché --> OK
    - l'export JPG --> OK
    - la fermeture des Etats --> OK mais par la suite, lorsque que je modifie des états ou formaulaires, apparaît les messages suivants :
    "L'opération sur l'objet graphique a échoué. Il est possible que le serveur OLE ne soit pas pas inscrit. Pour inscrire le serveur OLE, réinstallez-le."
    "RunTime Error ! Program : C:\Program Files\...\MSACESS.EXE. Abnormalprogram termination."
    Et boum, Access se ferme violemment sans fermer le fichier ldb.
    Quand je relance ma la base, tout se déroule normalement jusqu'à ce que relance l'export.

    Je précise que je ne suis pas un expert et c'est la raison pour laquelle je fais appel à vos lumières.

    Merci par avance pour votre aide.
    Dernière modification par loufab ; 09/05/2006 à 15h38. Motif: ajout balises Code

  2. #2
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    Slt,

    Même pb que toi, eh bien qu'aillant cherché un peu partout, j'ai rien trouvé

    Finalement je me suis tourné vers les Office Web Component, je fait mes graph dans un Form, et l'export marche Bien.

    Bon courage

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ton retour.

    Je vais paraître complètement ignare, mais c'est quoi les Office Web Components ?

    J'ai fait l'essai en en créant des graphiques dans des Formulaires et non pas des Etats et le résultat est le même.

    J'ai également essayé de renommer les différents éléments OLE des Etats (GraphiqueOLE1, GraphiqueOLE2, etc...) en incluant un compteur dans mon code et en remplaçant l'objet IndépendantOLE0 par une variable (= "GraphiqueOLE" & CompteurI), mais là ça bloque au moment de la définition de l'objet oleGrf (en plus je ne sais même pas si c'est possible de faire ce type d'opération).
    __________________

    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
    Public Sub Export_JPG_Tous()
     
    Dim RepertoireJPG As String
    Dim ReponseJPG As VbMsgBoxResult
    Dim CompteurI As Integer
     
    CompteurI = 1
     
    ReponseJPG = MsgBox("Souhaitez vous exporter le graphe au format JPEG ?", vbYesNo, "Export JPEG")
    If ReponseJPG = vbYes Then
        RepertoireJPG = CurrentDir
        Export_JPG "Etat1", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat2", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat3", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat4", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat5", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat6", RepertoireJPG, CompteurI
        CompteurI = CompteurI + 1
        Export_JPG "Etat7", RepertoireJPG, CompteurI
        MsgBox ("Export JPG Terminée")
    End If
     
    End Sub
    ___________________
     
    Public Sub Export_JPG(NomEtat As String, RepertoireJPG, CompteurI)
     
        Dim GraphName, NomGraphOLE As String
        Dim oleGrf As Object
     
        NomGraphOLE = ""
        NomGraphOLE = "GraphiqueOLE" & CompteurI
     
        GraphName = RepertoireJPG & "Exports Graphiques\" & NomEtat & " - " & Format(Year(Now) Mod 100, "00") & Format(Month(Now), "00") & Format(Day(Now), "00") & ".jpg"
     
        DoCmd.OpenReport NomEtat, acViewPreview, , , acHidden
        Set oleGrf = Reports(NomEtat).NomGraphOLE.Object
        oleGrf.Export FileName:=GraphName
        Set oleGrf = Nothing
        DoCmd.Close acDefault, NomEtat, acSaveNo
     
    End Sub
    Dernière modification par loufab ; 25/09/2007 à 13h41.

  4. #4
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    Slt,

    Les offices Web Component, c'est quoi donc

    Il faut insérer un object : Microsoft Office Chart xx.x et cocher les références à Microsoft Office Web Component ...

    Ensuite l'objet est un peu long à programmer (enfin je trouve), mais tu fais ce que tu veux de ton graph.

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

    OK, je vois de quoi tu parles et nous sommes en phases.

    J'avais réaliser ce test (insertion d'un grpahique dans un formulaire via l'assistant) et le pb était le même.

    Trop galère, je ne sais pas comment m'en sortir.

  6. #6
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    Slt,

    Voici une petite classe que j'avais fait rapidement (Désolé pour le manque de commentaire ). Elle ne me sert qu' a faire des graph Courbe, pour les autre il faudrait la compléter

    Chez moi la Class s'appelle : ClassGraphOwc

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    Option Compare Database
    Option Explicit
     
    ' Déclaration des Variables Owc
        Dim WithEvents oChartSpace As OWC.ChartSpace
        Dim oSerie As OWC.WCSeries
        Public oDataSource As OWC.WCDataSource
    ' Déclaration Des Variable ADO
        Public AdoCnn As ADODB.Connection
        Dim AdoRs As ADODB.Recordset
    Sub DataConnect(StrPathConnection As String)
        ' Connection à la base de données
        StrPathConnection = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & StrPathConnection
        Set AdoCnn = New ADODB.Connection
        AdoCnn.ConnectionString = StrPathConnection
        AdoCnn.CursorLocation = adUseClient
        AdoCnn.Open
    End Sub
    Sub DataDisConnect()
        ' Déconnection de la base de données
     
     
        If Not (AdoCnn Is Nothing) Then
            AdoCnn.Close
            Set AdoCnn = Nothing
        End If
    End Sub
     
    Sub DataGraphSourceOpen(StrSQL As String)
     
        Set AdoRs = New ADODB.Recordset
        With AdoRs
            .Open StrSQL, AdoCnn, adOpenStatic, adLockReadOnly
        End With
     
    '    AdoRs.CursorLocation = adUseClient
    '    AdoRs.CursorType = adOpenForwardOnly
    '    Set AdoRs = AdoCnn.Execute(StrSQL)
        ' Assigne les données au graphique
        Set oDataSource = oChartSpace.ChartDataSources.Add
        With oDataSource
            .DataSourceType = chDataSourceTypeRecordset
            .DataSource = AdoRs
        End With
     
    End Sub
    Sub DataGraphSourceClose()
        If Not (AdoRs Is Nothing) Then
            AdoRs.Close
            Set AdoRs = Nothing
        End If
    End Sub
     
    Sub Export(StrPath As String)
    On Error GoTo Export_Error
        oChartSpace.ExportPicture StrPath
    Exit Sub
    Export_Error:
    Select Case Err.Number
        Case Else
            MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Export of Module de classe ClassGraphOwc"
    End Select
    End Sub
    Sub CreateChartSapce(ByRef PbjectOwcChartSpace As Object, Optional StrTitle As String = "")
     
        Set oChartSpace = PbjectOwcChartSpace
        With oChartSpace
            .Clear
            .Refresh
     
            If StrTitle <> "" Then
                .HasChartSpaceTitle = True
                With .ChartSpaceTitle
                    .Caption = StrTitle
                    .Font.Name = "Arial Black"
                    .Font.Size = 8
                End With
            End If
     
        End With
    End Sub
    Function CreateChart(Optional StrTitle As String = "") As Long
        Dim oChart As OWC.WCChart
     
        Set oChart = oChartSpace.Charts.Add
        With oChart
            If StrTitle <> "" Then
            .HasTitle = True
            .Title.Caption = StrTitle
            .HasLegend = True
            .Legend.Font.Size = 6
            .Legend.Font.Name = "Comic Sans MS"
            .Legend.POSITION = chLegendPositionBottom
            End If
     
            ' Paramétre l'axe principal
            With .Axes(ChartAxisPositionEnum.chAxisPositionLeft)
                .Scaling.HasAutoMaximum = True
                .Scaling.HasAutoMinimum = True
            End With
        End With
     
        CreateChart = oChart.Index
     
        Set oChart = Nothing
    End Function
    Sub ChartUpdateTitle(StrTitle As String, Optional IndexOfChart As Long = 0)
     
        With oChartSpace.Charts(IndexOfChart)
            .HasTitle = True
            .Title.Caption = StrTitle
        End With
     
    End Sub
    Sub ChartDelete(Optional IndexOfChart As Long = 0)
        oChartSpace.Charts.Delete IndexOfChart
    End Sub
    Sub ChartSpaceClear()
        oChartSpace.Clear
    End Sub
     
    Function CreateSerie(StrNameOfFieldsCategorie As String, StrNameOfFieldsValue As String, StrCaption As String, TypeGraph As ChartChartTypeEnum, Optional IndexOfChart As Long = 0) As Long
        ' Création des série
        Dim oChart As OWC.WCChart
        Set oChart = oChartSpace.Charts(IndexOfChart)
        Set oSerie = oChart.SeriesCollection.Add
        With oSerie
            .Type = TypeGraph
            .Caption = StrCaption
            .SetData chDimCategories, oDataSource.Index, StrNameOfFieldsCategorie
            .SetData chDimValues, oDataSource.Index, StrNameOfFieldsValue
        End With
        CreateSerie = oSerie.Index
        Set oSerie = Nothing
        Set oChart = Nothing
    End Function

    Et un petit exemple comment l'utiliser :
    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
     
    Function Test()
    Public g As New ClassGraphOwc
    Dim IdChart As Long
     
        g.DataConnect PathData
        g.CreateChartSapce oFrmGraph.LeGraph.Object
     
     
        ' Fait le graphique
        g.ChartSpaceClear
        IdChart = g.CreateChart(StrTitre & StrRef & StrFiltre)
        g.DataGraphSourceOpen StrSQL
     
     
        g.CreateSerie "FSTK3_DTPC", "VALOSTK", "VALORISATION DES STOCKS", chChartTypeLineMarkers, IdChart
        g.CreateSerie "FSTK3_DTPC", "VALOOBJMIN", "VALORISATION DES OBJ MIN", chChartTypeLineMarkers, IdChart
     
        g.DataGraphSourceClose
     
    End Function

    StrSQl = Req SQL
    oFrmGraph = object Form ou se trouve le graph
    LeGraph = Object OWC

    PS : Je travaille avec la version 9 de OWC
    PS2 : Je n'est pas testé l'exemple, je l'ai extrais d'un code plus long, c'est juste pour te donner des exemple, tu aura surement à l'adapter

    @+

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Encore une fois, merci pour ton aide.
    Mais ce coup ci, trop fort pour moi et pas assez de temps d'étudier / porter ta proposition de solution dans mon projet en cours.

    En parallèle, j'ai créé une demande d'aide sur un autre forum.

    Si j'ai des news, je te tien informé.


    A+.

Discussions similaires

  1. Listener sur objets graphiques
    Par _concept_ dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 29/05/2012, 17h54
  2. Réponses: 1
    Dernier message: 03/04/2007, 10h27
  3. Export d'un objet OLE vers un fichier Excel
    Par Acarp47 dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2007, 16h21
  4. manipuler les objets graphique d'excel sur access
    Par technopole dans le forum Access
    Réponses: 4
    Dernier message: 21/07/2006, 10h37
  5. action sur objet graphique???
    Par ricardvince dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/04/2006, 18h53

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