besoin d'aide pour le code d'1 graphique - VB/VBA/VBS - Programmation
Marsh Posté le 09-05-2005 à 14:11:09
Essaye:
ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range([C4], _ |
Marsh Posté le 09-05-2005 à 14:20:15
Merci de ta réponse
J'ai essayé ton code,
j'obtiens une erreur d'éxécution '424' (objet requis)
Aie! je ne sais pas du tt ce qui va pas...
Marsh Posté le 09-05-2005 à 14:50:19
Pour essayer d'isoler le problème, supprime, à la fin de ta ligne, la virgule et le PlotBy...
Marsh Posté le 09-05-2005 à 14:56:02
Autre méthode, plus "propre":
Dim rChart as Range |
Marsh Posté le 09-05-2005 à 15:16:50
ta méthode est pas mal du tout ;-)
j'ai juste remplacé :
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphe1"
par
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
de manière que le graphe apparaît sur une nouvelle feuille.
Tu m'as bien aidé. Je voudrai pas abusé mais j'ai encore une question, avec ta méthode, mon graphe prend les données par lignes ce qui donne une multitude de courbe à la place d'obtenir une seule courbe.
Pour moi, cela vient de la définition abscisse & ordonnée (en abscisse: la colonne C4 & ordonnée: la colonne G4)
J'ai tenté de toucher au prgm que tu as rectifié mais ca marche pas
Range("C4" ).Select
Range(Selection, Selection.End(xlDown)).Select
Range("G4" ).Activate
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Dim rChart As Range
Set rChart = Range([C4], [G4].End(xlDown))
Charts.Add
ActiveChart.ChartType = xlLineMarkersStacked
ActiveChart.SetSourceData Source:=rChart, PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
End With
Est-ce que tu sais définir abscisse et ordonnée pr moi c du chinois
merci d'avance
Marsh Posté le 09-05-2005 à 16:18:09
Sorry, je n'ai pas de data à disposition pour un chart.
As-tu essayé de faire ton graphe en passant par l'assistant et en activant l'enregistreur de macro?
Par contre, pourquoi les 5 lignes audessus de Dim rChart as Range?
Marsh Posté le 09-05-2005 à 17:04:51
Oui excuse moi les 5 lignes sont totalement inutiles
en revanche g tjrs le même pb;
J'ai essayé de passer par l'enregistrement d'une macro, ce qui m'a permis d'établir la trame de cette partie du prgm, mais je suis obligé de retoucher le code de cette macro car, ma liste de données est modulable avec une autre macro (c une base de données).
J'ai fais une autre méthode mais g tjrs le même pb mon graphe ne prend pas en abscisse les données de la colonne C et en ordonnée les données de la colonne G:
il réagit comme ça
colonne D en fonction de colonne C
colonne E en fonction de colonne C
colonne F en fonction de colonne C
colonne G en fonction de colonne C
Dans la logique il devrait n'égliger D, E, F
le code que j'ai établi a également ce pb:
Dim DerniereLigne As Integer
'----------------------------------------------------------------------------
DerniereLigne = 4
While Not (IsEmpty(Worksheets("electro usine" ).Cells(DerniereLigne + 1, 3)))
DerniereLigne = DerniereLigne + 1
Wend
Range("C4" ).Select
Range("G4" ).Activate
Charts.Add
ActiveChart.ChartType = xlLineMarkersStacked
ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:C" & DerniereLigne, "G4:G" & DerniereLigne), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
End With
Peux-tu m'aider?
Ps:je débute en programmation (simplement pr satisfaire les exigences de mon patron...)
Marsh Posté le 10-05-2005 à 01:25:00
T'ai envoyé un MP...
Marsh Posté le 10-05-2005 à 09:11:04
Salut Alain,
g bien reçu ton mail, merci de te creuser la tête pr moi
Par contre je n'arrive pas du tout à le lire (impossible d'afficher cette page)
ps:je porte bien mon alias ;-)
Marsh Posté le 10-05-2005 à 09:26:51
Je te disais que, si tes données ne sont pas trop "sensibles", tu peux m'envoyer ton classeur à alain point gerard at tiscali point be.
Marsh Posté le 10-05-2005 à 09:37:04
ok c sympas,
mais je peux vriament pas te les envoyer car c elles sont confidentielles (suivi environnemental d'1 indus. chimiq.)
je vais essayé un truc, et je te tiens au courant.
au pire des cas je t'envoie le fichier avec seulement la macro
merci encore Alain
A+
Marsh Posté le 10-05-2005 à 10:13:24
Ou des données bidons...
Tu peux changer les titres de colonnes et les valeurs.
Ce qui est important c'est que je comprenne la tête que ça doit avoir en finale.
Marsh Posté le 10-05-2005 à 10:32:24
Bon après des heures de d'attente, de réflexion j'ai enfin trouvé:
j'ai contourné le pb en enregistrant une macro qui efface les courbes que je n'ai pas demandé ;-)
pourquoi je n'ai pas pensé +tot!
enfin un grand merci car sans toi je serai tjrs au même point. je te donne le prgm pour que tu comprennes ma logique qui est "illogique" mais bon, ça marche c le principal.
Dim DerniereLigne As Integer
'----------------------------------------------------------------------------
DerniereLigne = 4
While Not (IsEmpty(Worksheets("electro usine" ).Cells(DerniereLigne + 1, 3)))
DerniereLigne = DerniereLigne + 1
Wend
Range("C4" ).Select
Range("G4" ).Activate
Charts.Add
ActiveChart.ChartType = xlLineMarkersStacked
ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:C" & DerniereLigne, "G4:G" & DerniereLigne), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
End With
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).LegendKey.Select
Selection.Delete
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).LegendKey.Select
Selection.Delete
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).LegendKey.Select
Selection.Delete
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.ChartArea.Select
PS: tu as l'air de touché pas mal en VBA, si tu as le temps today, j'ai envoyé sur le forum un deuxième sujet concernant l'affichage d'un commentaire d'une cellule dans un textbox.
Donc si le coeur te dit... En espérant qu'1 jour je puisse répondre a une de tes questions (après 10 ans de prgm peut-être lol)
Marsh Posté le 09-05-2005 à 13:35:24
Bonjour tout le monde,
Je débute la prgmation VBA, et une fois encore j'ai 1 petit problème.
Ce forum m'a déjà bien aidé, j'espère que vous seriez me répondre
Je dois tracer un graphique en partant d'une liste de données qui peut être augmentée par une autre macro, donc g pas trop le choix il faut que j'utilise la fonction xlDown
je vous montre le code:
Range("C4" ).Select
Range(Selection, Selection.End(xlDown)).Select
Range("G4" ).Activate
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Charts.Add
ActiveChart.ChartType = xlLineMarkersStacked
ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:Selection.End(xlDown), G4:Selection.End(xlDown)" _ ), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphe1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
le problème vient de la partie en rouge dans ma déclaration de données.....
Est-ce que qlqu'un est assez calé pour m'aider?
Merci d'avance,