Séries de données non fixes

Emakhtila Messages postés 17 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 10 mai 2006 - 5 mai 2006 à 15:18
Emakhtila Messages postés 17 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 10 mai 2006 - 10 mai 2006 à 16:18
Bonjour tout le monde.

Bon voila je me retrouve coincée en voulant faire un graphique avec VB. Mon problème c'est que j'ai créé un bouton pour pouvoir faire un graphique mais ma base peut changer. Mes séries de données ne restent donc pas fixes. En fait j'aurai besoin d'aide pour généraliser ce bout de programme qui permet de faire la sélection des données.
J'ai plusieurs groupes qui contiennent les mêmes variables mais pas le même nombre de données. Ainsi, j'aurai plusieurs courbes. Chaque groupe contient 3 variables : le temps, le taux et la variance. Je voudrai faire un graphique avec le temps en abscisse et le taux en ordonnée (tous les groupes étant sur le même graphique).
En enregistrant la macro pendant que je faisait le graphique à la main pour 3 groupes, j'ai obtenu le début de programme suivant :

Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Tous!R4C1:R373C1"
ActiveChart.SeriesCollection(1).Values = "=Tous!R4C2:R373C2"
ActiveChart.SeriesCollection(1).Name = "=Tous!R2C1"
ActiveChart.SeriesCollection(2).XValues = "=Tous!R4C4:R373C4"
ActiveChart.SeriesCollection(2).Values = "=Tous!R4C5:R373C5"
ActiveChart.SeriesCollection(2).Name = "=Tous!R2C4"
ActiveChart.SeriesCollection(3).XValues = "=Tous!R4C7:R373C7"
ActiveChart.SeriesCollection(3).Values = "=Tous!R4C8:R373C8"
ActiveChart.SeriesCollection(3).Name = "=Tous!R2C7"

En fait j'aimerai généralisé ce qui est en rouge pour que l'ordinateur sélectionne lui même les séries suivant un nombre de groupe que je demande au préalable dans un inputbox. Je pensais faire un truc dans le genre :

Dim NbCourbe As Integer
NbCourbe = InputBox("Combien de courbe voulez-vous ?")
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
For I = 1 To NbCourbe
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(I).XValues = ici je ne vois pas comment généraliser une plage de données ActiveChart.SeriesCollection(I).Values ActiveChart.SeriesCollection(I).Name
Next I

J'espère avoir été assez claire. Merci d'avance.

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 mai 2006 à 00:29
Salut
Bah c'est de l'ASCII classique.
Que va rentrer l'utilisateur dans ton InputBox ? R4C1 (dans D1) puis R373C1 (dans D2) ? (je suppose)
Ensuite, il faut isoler le chiffre qui suit le C et le convertir en chiffre pour pouvoir l'incrémenter
Chiffre1 = Val(Mid(D1, Instr(1, D1, "C") + 1))
D1 = Left(D1, Instr(1, D1, "C"))
Chiffre2 = Val(Mid(D2, Instr(1, D2, "C") + 1))
D2 = Left(D1, Instr(1, D2, "C"))
puis l'insérer dans ta boucle où I est l'incrément
ActiveChart.SeriesCollection(I).XValues = "=Tous!" & D1 & CStr(Chiffre1 + I - 1) & ":" & D2 & CStr(Chiffre2 + I - 1)
ActiveChart.SeriesCollection(I).Values = "=Tous!" & D1 & CStr(Chiffre1 + I) & ":" & D2 & CStr(Chiffre2 + I)
...
Je viens de voir qu'il faudra aussi isoler le chiffre après le R pour transformer R4 en R2.
Le principe est le même (un peu plus compliqué puisqu'il faut choper le chiffre entre R et C, mais analyse les fonctions de traitement de chaine comme Left, Right et Mid).
A toi de jouer

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
Emakhtila Messages postés 17 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 11:33
en fait dans mon inputbox, l'utilisateur va juste renter 2 s'il a 2 groupes ou 3 s'il en a 3.
0
Emakhtila Messages postés 17 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 16:18
merci de ton aide. Cela m'a beaucoup aidé. Bye
0
Rejoignez-nous