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

Excel Discussion :

Processus Excel persistant [XL-2007]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Processus Excel persistant
    Bonjour,
    J'ai une procédure Access 2007 qui ouvre un classeur et génère un graphique. Rien de compliqué (du moins je le pensais) sauf qu'elle plante une fois sur deux. Je me suis aperçu que le processus Excel créé lors de l'exécution ne disparaissait pas en fin de procédure et c'est ce qui fait planter la procédure lors d'un second appel. De plus (je ne suis pas rompu à Excel VBA) certaines propriétés sont accessibles via l'objet Chart, d'autres via l'objet ChartObject, si je rajoute sous la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.Location where:=xlLocationAsObject, Name:="Feuil1"
    la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ObjExcelChartObj = ActiveChart.Parent
    là je dois compacter la base entre deux appels de la procédure sinon ça plante !

    Si quelqu'un pouvait m'aiguiller, me donner une piste ca m'éviterait de rester comme un âne derrière mon écran, voici la procédure initiale, bon WE ensoleillé à tous
    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
     
    'Variables Excel -----------------------------------------
    Dim ObjExcelApp As New Excel.Application
    Dim ObjExcelWks As Excel.Workbook
    'Dim ObjExcelChartObj As Excel.ChartObject
    'Variables  -----------------------------------------
    Dim Tableau1(1 To 10) As Integer
    Dim Tableau2(1 To 10) As Integer
    Dim x As Integer
     
     
    'tableau pour les Abscisses
        For x = 1 To 10
            Tableau1(x) = x * 2
        Next x
     
    'tableau pour les Ordonnées
        For x = 1 To 10
            Tableau2(x) = Int((50 * Rnd) + 1)
        Next x
     
     
    Set ObjExcelWks = ObjExcelApp.Workbooks.Add
    ObjExcelApp.Visible = True
     
     
    ObjExcelWks.Charts.Add
     
     
    ActiveChart.Location where:=xlLocationAsObject, Name:="Feuil1"
    'Set ObjExcelChartObj = ActiveChart.Parent
     
     
        With ActiveChart
            .SeriesCollection.NewSeries
            .SeriesCollection(1).XValues = Tableau1()
            .SeriesCollection(1).Values = Tableau2()
            .ChartType = xlLine
            .SetElement (msoElementLegendBottom)
            .SeriesCollection(1).Smooth = True
        End With
     
    'ObjExcelChartObj.Left = ActiveSheet.Range("B10").Left
     
    ObjExcelApp.Quit
    Set ObjExcelWks = Nothing
    Set ObjExcelApp = Nothing

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Ouf
    Après m'être perdu en désespoir de cause dans les méandres des ProcessID j'ai résolu mon problème.
    Donc il m'a fallu déclarer une variable pour représenter le graphique et effectuer un deuxième set pour la location soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set ObjExcelChart = ObjExcelWks.Charts.Add
    'Pas bon
    'ActiveChart.Location where:=xlLocationAsObject, Name:="Feuil1"
    'Bon
    Set ObjExcelChart = ObjExcelChart.Location(where:=xlLocationAsObject, Name:="Feuil1")
    Par défaut éviter tout ce qui peut être ActiveChart, ActiveSheet, etc...
    Merci à toutes les personnes m'ayant lu, et bonne fin de journée
    Beren69

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

Discussions similaires

  1. [VB.NET]Processus Excel persistant
    Par Yolak dans le forum Windows Forms
    Réponses: 8
    Dernier message: 16/10/2010, 13h00
  2. VBSCRIPT : Processus EXCEL persistant
    Par datastep dans le forum VBScript
    Réponses: 6
    Dernier message: 27/08/2010, 13h39
  3. Processus Excel persistant
    Par Mike619 dans le forum VBA Access
    Réponses: 8
    Dernier message: 12/03/2008, 09h15
  4. Réponses: 2
    Dernier message: 14/01/2008, 14h17
  5. processus excel
    Par CharleLéo dans le forum Langage
    Réponses: 4
    Dernier message: 25/10/2005, 11h49

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