Bonjour,
Dans une feuille Excel je souhaite incorporer un graphique sous un tableau.
Avec l' "Option Strict On" activée (sur Excel.Shapes ou Excel.ChartArea) je ne parviens pas à faire tourner mon outil : "Impossible de définir la propriété Top/Height/Width de la classe"
Si je désactive l'option, xlapp.ActiveSheet.Shapes(1).Incrementleft(-179.25) ou .Shapes(1).left=1 , remplissent leurs offices.
Mon souhait serait de comprendre comment utiliser correctement les propriétés afin de ne plus passer par une liaison tardive. Ci-dessous mon 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
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 Option Strict On Option Explicit On Imports System.ComponentModel Imports System.IO Imports Microsoft.Office.Interop Imports ACRODISTXLib Public Class Main Dim xlapp As New Excel.Application [.] Private Sub Creation_Graphique(ByRef sheet As Excel.Worksheet, ByVal strName_sheet AsString, ByVal strDate AsString) Dim Obj_Graph As Excel.Chart Dim Plage_Etiquette, Plage_données As Excel.Range Dim Obj_SerieCol As Excel.Series Dim Graph_titre As Excel.ChartTitle Dim Graph_Area As Excel.ChartArea 'Création ma zone graphique xlapp.Charts.Add() 'Repositionnement 'avec Excel.Shapes ou ChartArea 'Anomalie Impossible de définir la propriété Top/Height/Width de la classe 'En désactivant le Option strict on : 'xlapp.ActiveSheet.Shapes(1).IncrementLeft(-179.25) 'xlapp.ActiveSheet.Shapes(1).IncrementTop(67.5) 'ou 'xlapp.ActiveSheet.Shapes(1).left = 1 'xlapp.ActiveSheet.Shapes(1).top = 150 'Personnalisation rapide de mon graphe Obj_Graph = xlapp.ActiveChart With Obj_Graph .HasLegend = False .ChartType = Excel.XlChartType.xlColumnClustered .Location(Excel.Xlic, strName_sheet) EndWith xlapp.ActiveChart.HasTitle = True Plage_Etiquette = xlapp.Range("A3:A8") Plage_données = xlapp.Range("D3:D8") 'Alimentation des données et valeurs Obj_SerieCol = CType(xlapp.ActiveChart.SeriesCollection(1), Excel.Series) Obj_SerieCol.XValues = Plage_Etiquette Obj_SerieCol.Values = Plage_données Obj_SerieCol.Border.ColorIndex = 2 'Changement du Titre xlapp.ActiveChart.ChartTitle.Text = Recap du " & strDate EndSub
Partager