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