Excel, tracé de deux courbes _ ajout d'un axe des ordonnées

Signaler
Messages postés
20
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
7 avril 2009
-
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
-
Bonjour,

J'utilise actuellement Excel pour tenter d'afficher deux courbes et ceci en passant par vb.Net.

J'ai deux questions à propos de cet affichage :



<li>Question1</li>

Pour afficher ces courbes j'ajoute un
composant graphique à mon classeur, lui attribue les données à afficher
et ça fonctionne mais sur une seule courbe !

Voici une partie de mon code : (Graph est mon graphique, tabXY est mon tableau de données que j'ai recopié dans une feuille)



            Classeur.Charts.Add(, Classeur.Sheets.Item(Classeur.Sheets.Count))

            Graph = Classeur.ActiveChart


            'renommer le graphique

            Graph.Name = "graph" & NumeroCycle


            'type de courbe (nuage de points)

            Graph.ChartType = Excel.XlChartType.xlXYScatterSmoothNoMarkers


            'affectation des données pour les ordonnées (valeur de Y)

            Dim Rang As Excel.Range


            'applique la colonne A pour les X et la colonne B pour les Y

            Rang = feuille.Range("A2:A" & (tabXY.Length / 2) + 1, "B2:B" & (tabXY.Length / 2) + 1)

            Graph.SetSourceData(Rang, Excel.XlRowCol.xlColumns)

Le souci est que je ne sais pas du tout
comment faire pour appliquer une deuxième courbe à mon graphique parce
que si j'utilise de nouveau la fonction SetSourceData(,) avec les nouvelles données, alors la première courbe va prendre les valeurs de la seconde...
Existe-y-il une solution pour ajouter une seconde courbe?<li>Question2</li>Dans le cas où j'arrive à afficher mes deux courbes, il faudrait que j'attribue un axe des ordonnées par courbe.
Dans mon cas j'aurais un axe des abscisses commun aux deux courbes et la première aurait comme axe des ordonnées celui de gauche et la deuxième courbe aurait l'axe de gauche.

Est-t-il possible d'ajouter un axe des ordonnées et si oui, comment faire pour attribuer cet axe à la courbe souhaitée?

J'ai tenté de regarder comment était créée une macro en VBA mais en transposant les lignes de commandes sur vb.Net, ça n'a donné que des erreurs...

Cordialement,

Jull

2 réponses

Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour

Pour ajouter une série à ton objet graph, utilise la méthode NewSeries de la collection SeriesCollection ; essaie le code ci-dessous (à ajouter juste après l'instruction Graph.SetSourceData :

Dim serieDonnees As String
sourceDonnees = "R1C1:R100C1" ' source de donnees en notation R1C1
graph.SeriesCollection.NewSeries ' ajoute un élément à la collection SeriesCollection
With graph.SeriesCollection(Ubound(SeriesCollection))
     .Values = sourceDonnees
     .ChartType = Excel.XlChartType.xlXYScatterSmoothNoMarkers
End With

Je ne sais pas si comment on peut ajouter un deuxième axe.

Amicalement
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Autant pour moi, Jill Ubound(SeriesCollection) est invalide. Pour accéder au dernier élément d'une collection, il faut utiliser la propriété Count et non la fonction Ubound.

Voici le code corrigé :

Dim serieDonnees As String
dim numeroSerie As Integer
sourceDonnees = "R1C1:R100C1" ' source de donnees en notation R1C1
graph.SeriesCollection.NewSeries ' ajoute un élément à la collection SeriesCollectionnumeroSeries numeroSerie graph.SeriesCollection.Count
With graph.SeriesCollection(numeroSeries)
     .Values = sourceDonnees
     .ChartType = Excel.XlChartType.xlXYScatterSmoothNoMarkers
End With