Probleme du reglage de Scale d'un graphique Excel [Résolu]

simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention - 29 mai 2011 à 18:40 - Dernière réponse : simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention
- 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

Quelqu'un pourrait-il m'aider ?
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 mai 2011 à 00:26
3
Merci
"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

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 29 mai 2011 à 19:59
0
Merci
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)
Commenter la réponse de cs_Jack
simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention - 29 mai 2011 à 20:31
0
Merci
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 ?
Commenter la réponse de simmart
simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention - 29 mai 2011 à 20:38
0
Merci
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
Commenter la réponse de simmart
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 mai 2011 à 20:47
0
Merci
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
Commenter la réponse de ucfoutu
simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention - 29 mai 2011 à 21:45
0
Merci
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?
Commenter la réponse de simmart
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 mai 2011 à 21:53
0
Merci
@ 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
Commenter la réponse de ucfoutu
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 mai 2011 à 00:28
0
Merci
chartPage.Axes(Excel.XlAxisGroup.xlSecondary).MaximumScale

Non. Le premier paramètre est toujours XlValue (et la source de cette constante).
Ce paramètre arrive en deuxième.
Fais un peu attention
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 mai 2011 à 00:31
0
Merci
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
Commenter la réponse de cs_Jack
simmart 19 Messages postés lundi 28 mars 2011Date d'inscription 12 août 2011 Dernière intervention - 30 mai 2011 à 08:50
0
Merci
Salut tt le monde,

Merci jack, effectivement l'explorateur d'objets de l'éditeur VBA d'excel aide beaucoup pour voir les parents.

Je rectifie donc, le code donne :
chartPage.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary).MaximumScale = 20000
Commenter la réponse de simmart

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.