Bonjour,
J'ai un problème pour créer dynamiquement un graphique sur une feuille selon un tableau de valeurs à 3 colonnes.
Axe X Séries Valeurs (Y)
Time [h] RAT MEAN
0.25 Rat 397 1040
0.5 Rat 397 3570
1 Rat 397 4230
2 Rat 397 3360
4 Rat 397 322
6 Rat 397 BLQ
0.25 Rat 398 3270
0.5 Rat 398 3590
1 Rat 398 3620
2 Rat 398 3180
4 Rat 398 1650
6 Rat 398 464
0.25 Rat 399 2480
0.5 Rat 399 3780
1 Rat 399 4100
2 Rat 399 5160
4 Rat 399 4270
6 Rat 399 480
Pour chaque série (Rat), j'ai une valeur (Mean) donnée en fonction du temps (Time).
Voila le code où Atitle est le nom de mon graphique, Asheet le nom de la feuille sur lequel je l'insère, Arange la plage de données.
Exemple d'appel: Call CreateChart("Graphique1", "Feuille1", "A6") me crée un tableau sur la feuille sélectionnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Sub CreateChart(Atitle As String, Asheet As String, Arange As String) '--------------------------------------------------------------------------------------- ' Procedure : CreateChart ' Author : ' Date : 09/06/2008 ' Purpose : '--------------------------------------------------------------------------------------- ' On Error GoTo CreateChart_Error Dim mychart As ChartObject Dim myrange As Range Dim mysheetname As String Charts.Add With ActiveChart ActiveChart.Name = Atitle ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets(Asheet).Range(Arange), PlotBy:= _ xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:=Asheet ActiveChart.HasLegend = True ActiveChart.AutoScaling = False End With ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = Range(Arange).Value ActiveChart.SeriesCollection(1).Values = "=" & Asheet & "!R13C4:R18C4" ActiveChart.SeriesCollection(1).Name = Range(Arange).Offset(1, 1) ActiveChart.SeriesCollection(2).Values = "=" & Asheet & "!R19C4:R24C4" ActiveChart.SeriesCollection(2).Name = Range(Arange).Offset(7, 1) 'ActiveChart.SeriesCollection(3).Values = "=" & Asheet & "!R25C4:R30C4" 'ActiveChart.SeriesCollection(3).Name = Range(Arange).Offset(13, 1) ActiveChart.Legend.Select Selection.Position = xlBottom ' On Error GoTo 0 Exit Sub CreateChart_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CreateChart of Module Module6" ' End Sub
Je souhaite optimiser les choses suivantes:
1) J'ai un message d'erreur sur la 3ème série.
2) Je souhaite créer une boucle car la taille de chaque série n'est pas fixe.
3) Je voudrais remplacer les références RxCx par des Cells() (ou au pire Range)
4) Déterminer la position x,y de mon graphe
Partager