simmart
Messages postés19Date d'inscriptionlundi 28 mars 2011StatutMembreDernière intervention12 août 2011
-
29 mai 2011 à 18:40
simmart
Messages postés19Date d'inscriptionlundi 28 mars 2011StatutMembreDernière intervention12 août 2011
-
30 mai 2011 à 08:50
Bonjour,
Je crée a partir de VB 2010 un graphique dans excel et je n'arrive pas a regler le minimumscale et maximumscale. J'ai bien sur ajouter la reference Microsoft Graph et j'ai crée un macro excel pour essayer de copier le code mais il doit etre legerement différent car je ne trouve pas la solution!
Code macro VBA que je veux appliquer dans VB 2010 :
ActiveChart.Axes(xlValue).MinimumScale = 0
Code actuel sur VB 2010 :
xlCharts = xlWorkSheet.ChartObjects
myChart = xlCharts.Add(10, 80, 300, 250)
chartPage = myChart.Chart
seco = chartPage.SeriesCollection
se = seco.NewSeries
With se
.XValues = "='Feuil1'!$A$2:$A$32"
.Values = "='Feuil1'!$B$2:$B$32"
.ChartType = Excel.XlChartType.xlXYScatter
End With
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mai 2011 à 00:26
"il ne reconnait pas xlValue et xlSecondary"
Oui, normal, ce sont des constantes de Excel.
Il faut donc les faire précéder de Excel... quelque chose pour arriver à mettre ces constantes.
Tu trouveras le "Excel... quelque chose" dans Excel : Tu ouvres un classeur et tu vas dans l'éditeur de VBA.
Tu tapes F2 pour faire apparaitre l'explorateur d'objets et tu fais une recherche de ces constantes : Il te donnera le nom des parents.
Par exemple pour XlValue --> Excel.XlAxisType.XlValue
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 mai 2011 à 19:59
Salut
Quelle version de Excel ?
Attention aux noms de tes objets. xlCharts ou xlWorkSheet sont très proches de mots réservés de Excel. Gare aux confusions et aux erreurs de compilation.
De quels types sont tes objets ?
Le code VB.Net que tu nous montres fonctionne ?
A mon avis, ces deux lignes ne peuvent pas fonctionner :
.XValues = "='Feuil1'!$A$2:$A$32"
.Values = "='Feuil1'!$B$2:$B$32"
Tu mélanges syntaxe de cellule et syntaxe VBA
Utilise Range, comme expliqué dans l'aide Excel (sur XValues)
.XValues = xlWorkSheet.Range("A2:A10")
.Values = xlWorkSheet.Range("B2:B10")
Fais fonctionner ta macro sous Excel avant de vouloir la transposer à .Net.
ChartType : En imposant un ChartType à une Serie, il se peut que les autres séries soient affectées par ton choix. Seules les types de même famille peuvent coexister sur le même Chart (par exemple, une série en xlXYScatter et l'autre en xlXYScatterLinesNoMarkers), mais si tu utilises un type du genre xl3DArea, toutes tes séries seront de ce type
Puisque .Axes s'appliquent au Chart (ActiveChart de VBA), il te suffit de l'appliquer à ton objet chartPage.
Cela sous-entend que l'échelle est unique/principale (xlPrimary)
Dans le cas d'une seconde échelle, il faut le préciser dans le paramétrage de l'appel à .Axes :
chartPage.Axes(xlValue, xlSeconday).MinimumScale
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
simmart
Messages postés19Date d'inscriptionlundi 28 mars 2011StatutMembreDernière intervention12 août 2011 29 mai 2011 à 20:31
Salut jack,
J'utilise la version 2007 d'Office.
Pour te repondre oui mon programme VB.net marche très bien, c'est justement en utilisant .range pour mettre les valeurs que ca ne marche pas, d'ou l'utilisation de :
.XValues = "='Feuil1'!$A$2:$A$32"
.Values = "='Feuil1'!$B$2:$B$32"
qui marche très bien.
Pour en revenir a mon probleme avec .Axes j'avais deja essayé le code que tu m'a suggeré
chartPage.Axes(xlValue, xlSeconday).MinimumScale = 30 par exemple et cela ne marche pas il ne reconnait pas xlValue et xlSecondary (xlPrimary pareil)...
Une autre idée ?
simmart
Messages postés19Date d'inscriptionlundi 28 mars 2011StatutMembreDernière intervention12 août 2011 29 mai 2011 à 20:38
OK, en retapant xlSecondary, VB 2010 m'a proposé un argument pour .Axes qui ne m'avais pas proposé avant...
Solution au problème pour ceux que ca interessent :
chartPage.Axes(Excel.XlAxisGroup.xlSecondary).MaximumScale = 20000 --> xlSecondary est l'axe des X
chartPage.Axes(Excel.XlAxisGroup.xlPrimary).MaximumScale = 20000 --> xlPrimary est l'axe des Y
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 29 mai 2011 à 20:47
Bonjour,
déjà :
- Les objets se définissent par utilisation de Set
(Set monobjet objet et non monobjet objet)
et tu en as une "tapée", dans ton code à corriger.
Comment veux-tu que soit compris 'Feuil1' ? Tu ne définis pas 'Feuil1' de quoi ! Ce terme ne peut être compris que s'il se rapporte à un classeur ouvert et défini.
etc...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
simmart
Messages postés19Date d'inscriptionlundi 28 mars 2011StatutMembreDernière intervention12 août 2011 29 mai 2011 à 21:45
Bonsoir ucfoutu,
Je crois que tu as mal compris, le programme fonctionne bien avec 'Feuil1'. Je n'ai pas poster le début du programme ou je définis les object excel.application , workbook et worksheet.
Pour Set tu est sur que c'est absolument nécessaire? Car le programme tourne bien sans?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 29 mai 2011 à 21:53
@ simmart
Lecture dans l'aide VB
Les instructions Dim, Private, Public, ReDim et Static déclarent exclusivement des variables faisant référence à un objet. Aucun objet réel n'est désigné tant que vous n'avez pas associé un objet particulier à la variable avec l'instruction Set.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mai 2011 à 00:31
Et je corrige : XlPrimary ou XlSecondary ne désignent pas l'axe.
C'est parce qu'il est écrit en premier paramètre que l'instruction l'a confondu avec XlValue et XlCategory