caribou65
Messages postés9Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention12 juin 2008
-
3 juin 2008 à 00:09
caribou65
Messages postés9Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention12 juin 2008
-
7 juin 2008 à 00:56
Salut à tous
Tout d'abord un grand merci à tous les contributeurs de ce forum, qui m'ont été d'une aide précieuse lors de la réalisation de mes macros. Je m'y suis collé en état de débutant total, et ça commence à rentrer :D
Mais là je coince un peu. J'ai fait une macro qui me sort des graphiques en fonction d'une colonne date et d'un paramètre. Il peut y avoir une multitude de paramètres donc comptage des colonnes et boucles.
En fait j'ai bien le bon nombre de graphiques, le premier est bon, mais le second affiche le premier graphe également, le troisième affiche le second...
voici mon code :
Sub graf()
'
' graf Macro
'
Dim nbparam As Integer
Dim i As Integer
Dim haut As Integer
Dim haut2 As Integer
' désactiver le rafraîchissement de l'écran pour accélérer le traitement
Application.ScreenUpdating = False
'boucle de traitement
haut = 2 For i 1 To nbparam - 1 'car premiere colonnedate
Sheets("Feuil2").Activate
Range(Columns(1), Columns(i + 1)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(Columns(1), Columns(i + 1))
ActiveChart.ChartType = xlLine
'positionnement des graphes
With ActiveChart
ActiveSheet.ChartObjects(i).Left = Range("I2").Left
ActiveSheet.ChartObjects(i).Top = Range("I" & haut).Top
ActiveSheet.ChartObjects(i).Width = 640
ActiveSheet.ChartObjects(i).Height = 270
End With
haut = haut + 20
Sheets("Feuil2").Select
Next i
End Sub
les quelques valeurs aberrantes qui apparaissent sont simplement dues à un disfonctionnement des capteurs ;)
Ma question est toute simple : Comment faire en sorte que mes graphes ne soient en fonction d'un et d'un seul paramètre ? (airtemp, pressure, ou autre...)
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201314 6 juin 2008 à 18:28
...
voila plus qu'a essayer
Sub graf()
'
' graf Macro
'
Dim nbparam As Integer
Dim i As Long
Dim haut As Integer
Dim haut2 As Integer
Dim LastValue As Long
Dim MaFeuil As Worksheet
Dim MaPlage As Range
' désactiver le rafraîchissement de l'écran pour accélérer le traitement
Application.ScreenUpdating = False
Set MaFeuil = Sheets("Feuil2")
With MaFeuil
'compter paramètres (les points a la ligne suivante sont O B L I G A T O I R)
nbparam = .UsedRange.Columns.Count
LastValue = .UsedRange.Rows.Count
'boucle de traitement
haut = 2 For i 2 To nbparam '2 car premiere colonnedate
'les points a la ligne suivante sont O B L I G A T O I R ils permetent d'associer a les fonctions a MaFeuil via le with
Set MaPlage = .Range(.Cells(2, i), .Cells(LastValue, i))
Charts.Add
With ActiveChart
.ChartType = xlLine
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = MaPlage 'valeur axe X
.SeriesCollection(1).Values = MaFeuil.Range("A2:A" & LastValue) 'Valeur axe Y
.SeriesCollection(1).Name = MaFeuil.Cells(1, i).Text 'nom de la serie
.Location Where:=xlLocationAsObject, Name:=MaFeuil.Name
End With
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = MaFeuil.Cells(1, i).Text 'nom du graph
End With
'positionnement des graphes
With .ChartObjects(i - 1)
.Left = Range("I2").Left
.Top = Range("I" & haut).Top
.Width = 640
.Height = 270
End With
haut = haut + 20
Next i
End With
MaFeuil.Activate 'on a besoin d'activé la feuille sinon la ligne suivante (bizzarement)s'appliquera au dernier graph
Application.ScreenUpdating = True
End Sub
et en prime
Sub GraphEffacerTout()
Dim MonGraph As ChartObject
For Each MonGraph In ActiveSheet.ChartObjects
MonGraph.Delete
Next
End Sub
caribou65
Messages postés9Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention12 juin 2008 3 juin 2008 à 08:49
Salut Bigfish et merci, je perdais espoir, après une nuit de prise de tête...
je me suis aussi dit que le souci venait de ce coté-là, j'ai testé avec ActiveChart.SeriesCollection(i).Xvalues et la même en Values mais ça coince avec le i...
caribou65
Messages postés9Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention12 juin 2008 6 juin 2008 à 19:52
c'est nickel !
j'ai jsute eu à inverser MaPlage et MaFeuil.Range("A2:A" & LastValue) dans Xvalues et values pour avoir vraiment ce que je voulais, et j'ai retiré la ligne Application.ScreenUpdating = True juste avant le End Sub.
C'est vrai que pour les points je m'en serais pas aperçu tout seul, merci !
bon il reste un petit souci mais rien de bien méchant, je planche dessus, maintenant que le match est terminé...
A partir du second graphique, j'ai une deuxième série de valeurs, qui vient de je ne sais ou mais qui ne dérange en rien le graphe, ça fait juste désordre...
par ici
si tu as une idée, je la prends volontiers, mais tu en as déjà fait beaucoup, je t'en remercie !