Emakhtila
Messages postés17Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention10 mai 2006
-
5 mai 2006 à 15:18
Emakhtila
Messages postés17Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention10 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 :
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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