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 :la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveChart.Location where:=xlLocationAsObject, Name:="Feuil1"là je dois compacter la base entre deux appels de la procédure sinon ça plante !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set ObjExcelChartObj = ActiveChart.Parent
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
Partager