mamash_bek
Messages postés20Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention11 juin 2009
-
9 févr. 2009 à 15:37
mamash_bek
Messages postés20Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention11 juin 2009
-
10 févr. 2009 à 11:58
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 repositionner mon graphe. Ci-dessous mon code
Dim xlapp AsNew
Excel.Application
[…]
PrivateSub 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
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 10 févr. 2009 à 02:02
Bonjour
Je pense que tu ne peux pas invoquer le graphique au moyen de la collection Shapes() avant que ton graphique soit incorporé dans ta feuille de calcul.
Peux-tu décaler ton bloc With vers le haut, juste après l'instruction créant le graphique, comme ce qui suit :
xlapp.Charts.Add()
Obj_Graph = xlapp.ActiveChart
With Obj_Graph
.HasLegend =
False
.ChartType = Excel.XlChartType.xlColumnClustered
.Location(Excel.XlChartLocation.xlLocationAutomatic, strName_sheet)
End
With
<?XML:NAMESPACE PREFIX = O /??>
Là, le graphique est incorporé, et fait partie de la collection Shapes de ta feuille de calcul.
mamash_bek
Messages postés20Date d'inscriptionmercredi 6 juin 2007StatutMembreDernière intervention11 juin 20091 10 févr. 2009 à 11:58
Tout d'abord, merci pour ton explicaiton.Cela m'a permis de me creuser la tête dans la bonne direction (après 2 jours de galère).
Voici donc le code corrigé et fonctionnel pour un Office 2003,si cela interesse quelqu'un:
Dim Obj_Graph As Excel.Chart
Dim Plage_Etiquette, Plage_données As Excel.Range
Dim Obj_SerieCol As Excel.Series
Dim obj_ChartObj As Excel.ChartObject
With Obj_Graph
.HasLegend = False
.ChartType = Excel.XlChartType.xlColumnClustered
.Location(Where:=Excel.XlChartLocation.xlLocationAsObject, Name:=strName_sheet)
End With
'Changement du Titre
obj_ChartObj = CType(sheet.ChartObjects(1), Excel.ChartObject)
obj_ChartObj.Chart.HasTitle = True
obj_ChartObj.Chart.ChartTitle.Text = "Retards de saisie à Fin " & strDate
'Repositionnement de la zone graphique
obj_ChartObj.Locked = False
obj_ChartObj.Left = 12
obj_ChartObj.Top = 125
obj_ChartObj.Width = 400
obj_ChartObj.Height = 250