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

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

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

Votre réponse

10 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 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é 88 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 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
Messages postés
19
Date d'inscription
lundi 28 mars 2011
Dernière intervention
12 août 2011
- 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
Messages postés
19
Date d'inscription
lundi 28 mars 2011
Dernière intervention
12 août 2011
- 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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 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
Messages postés
19
Date d'inscription
lundi 28 mars 2011
Dernière intervention
12 août 2011
- 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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 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
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 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
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 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
Messages postés
19
Date d'inscription
lundi 28 mars 2011
Dernière intervention
12 août 2011
- 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.