Bonjour,

Je cherche a piloter Excel depuis Delphi par EOL. J'ai définit une procedure qui crée un graph en fonction d'arguments passés en paramètres. Je crée deux series superposées dans le code mais lorsque j'ouvre ma feuille de graphique avec Excel, j'ai plusieures series au lieux de deux!!! Et je m'interoge sur l'origine des series supplementaires...

Voici le code:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
Procedure TForm1.CreerFichierXLS(DataMTO: TDataMTO; DataHoule: TDataHoule);
var
  Classeur: _WorkBook;
  FeuilleActive: _WorkSheet;
  Graph: _Chart;
  CollSerie : SeriesCollection;
  RangeX, RangeY, Range: ExcelRange;
  Axe: Axis;
  serie: ExcelXP.Series;
  i, j: integer;
 
Procedure TraceGraphExcel(Classeur:_WorkBook; RangeX, RangeY, RangeYY: ExcelRange; TitrePage, TitreGraph, TitreAxeDroit, TitreAxeGauche: String);overload;
var
  FeuilleActive: _WorkSheet;
  Graph: _Chart;
  CollSerie : SeriesCollection;
  Axe: Axis;
  serie: ExcelXP.Series;
  i, j: integer;
begin
  //Ajout d'une feuille au classeur
  Graph:=Classeur.Sheets.Add(emptyParam, emptyParam, 1, xlChart, 0) as _Chart;
  Graph.Name:=TitrePage;
  //creation d'un chart de type ligneXY
  Graph.ChartType:=xlXYScatter;
  //affectation au graph des valeurs de vitesse
  CollSerie:=Graph.SeriesCollection(EmptyParam,0) as SeriesCollection;
  //Première serie
  Serie:=CollSerie.NewSeries;
  Serie.FormulaLocal:='=SERIE(;'+rangeX.Address[true,true,xlA1,True,false]
    +';'+rangeY.Address[true,true,xlA1,True,false]+';1)';
  Serie.ChartType:=xlXYScatter;
  Serie.Border.Color:=RGB(0,0,255);
  Serie.Border.Weight:=3;
  Serie.MarkerStyle:=0;
  //Seconde serie
  Serie:=CollSerie.NewSeries;
  Serie.FormulaLocal:='=SERIE(;'+rangeX.Address[true,true,xlA1,True,false]
    +';'+rangeYY.Address[true,true,xlA1,True,false]+';1)';
  Serie.ChartType:=xlXYScatter;
  Serie.AxisGroup:=xlSecondary;
  Serie.MarkerStyle:=8;
  Serie.Border.LineStyle:=0;
  Serie.MarkerForegroundColor:=RGB(255,0,0);
  Serie.MarkerBackgroundColor:=RGB(255,0,0);
  //Mise en forme 
  //[...]
end;
 
begin
  //Demarrage de Excel
  ExcelApplication1.connect;
  //Ouverture du classeur
  ExcelApplication1.SheetsInNewWorkbook[0]:=1;
  Classeur:=ExcelApplication1.Workbooks.Add(emptyParam, 0);
  //cache Excel
  ExcelApplication1.Visible[0]:=false;
  //Activation de la première feuille
  FeuilleActive:= Classeur.Worksheets[1] as _WorkSheet;
  FeuilleActive.Name:='Mesures';
  //Definition des labels des colonnes et remplissage des cellules
  //[...]
  //=========================================Creation du graphique du vent moyen
  //Selection des valeurs pour construire le graph
  RangeX:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 1], FeuilleActive.Cells.item[DataMTO.NbMesures, 1]];
  RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 2], FeuilleActive.Cells.item[DataMTO.NbMesures, 2]];
  Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 3], FeuilleActive.Cells.item[DataMTO.NbMesures, 3]];
  TraceGraphExcel(Classeur, RangeX, Range, RangeY, 'Vent_Moyen', 'Vent moyen', 'Vitesse ('+ DataMTO.UniteVent +')', 'Direction (°)');
  //==========================================Creation du graphique du vent maxi
  //Selection des valeurs pour construire le graph
  RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 4], FeuilleActive.Cells.item[DataMTO.NbMesures, 4]];
  Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 5], FeuilleActive.Cells.item[DataMTO.NbMesures, 5]];
  TraceGraphExcel(Classeur, RangeX, Range, RangeY, 'Vent_Maximal', 'Vent maximal', 'Vitesse ('+ DataMTO.UniteVent +')', 'Direction (°)');
  //========================================Creation du graphique de l'agitation
  //Selection des valeurs pour construire le graph
  RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 16], FeuilleActive.Cells.item[DataMTO.NbMesures, 16]];
  Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 17], FeuilleActive.Cells.item[DataMTO.NbMesures, 17]];
  //Control de progession
  Form3.ProgressBar1.Position:=round(13/(13+Nbcouches)*20+80);
  TraceGraphExcel(Classeur, RangeX, RangeY, Range, 'Agitation', 'Agitation', 'Hauteur ('+DataHoule.UniteHoule+')', 'Direction (°)');
 
//Sauver la chose
  Classeur.SaveAs(copy(OpenDialog1.FileName, 0,Length(OpenDialog1.FileName)-3)+'XLS',EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
  xlNoChange,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
  //rend Excel visible
  ExcelApplication1.Visible[0]:=true;
end;
Le premier graph possède 3 series (celle en trop ne possède pas de valeurs X et y a "=Mesures!$A$1" pour valeurs Y !!!!)
Le second en possède deux (Ca c'est ce que je veux comme je veux)
Le dernier en possède 4 ( ) (j'ai bien les series avec les valeurs Y des colonnes P et Q comme demandé, mais j'ai aussi deux series avec les valeurs des colonnes D et E)

Je ne comprend pas comment c'est possible... J'ai beau tourner le truc dans tous les sens, je ne voit pas pourquoi. Quelq'un peut m'aider?
Merci!