IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 124, nombre de questions : 929, dernière mise à jour : 31 décembre 2023  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).

Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.

L'équipe Delphi de Developpez.com.

SommaireMicrosoft OfficeMicrosoft ExcelUtilisation des graphes (9)
précédent sommaire suivant
 

Nous allons ici voir la création de graphe automatisé. Il y a deux objets 'graphique' dans Excel, la feuille graphique, de la collection Chart qui appartient à l'objet classeur, et le graphique incorporé de la collection ChartObjects qui appartient à la feuille. Ces deux objets se manipulent presque à l'identique.

Pour une feuille graphique :

Code delphi : Sélectionner tout
1
2
3
Var MonGraph: _Chart; 
... 
MonGraph:=MonClasseur.Sheets.Add(emptyparam,emptyparam,1,xlChart,0) as _chart;
Pour utiliser ChartObject d'un classeur :
Code delphi : Sélectionner tout
1
2
3
4
5
Var resultat:OleVariant; 
... 
resultat:=monclasseur.Worksheets[1]; 
resultat.chartobjects.add[10,10,100,100]; 
resultat:=resultat.chartobjects[1].chart;
Pour transformer une feuille graphique en graphique incorporé et inversement :
Code delphi : Sélectionner tout
MonGraph.Location(xlLocationAsObject,MaFeuille.Name);

Mis à jour le 18 janvier 2014 bidou

Cela est possible lorsqu'une plage de valeur numérique est sélectionnée lors de la création du graphique. Ce n'est pas toujours très bon, mais pour des histogrammes, cela marche plutôt bien.

Code delphi : Sélectionner tout
1
2
MaFeuille.Range['A1','C20'].Select; 
MonGraph:=MonClasseur.Sheets.Add(emptyparam,emptyparam,1,xlChart,0) as _chart;

Remarque : pour éviter de voir arriver des séries 'sauvages', il convient de s'assurer de la non sélection d'une plage avant de créer le graphique.

Mis à jour le 18 janvier 2014 bidou

C'est de loin la méthode la plus simple. On définit la plage des valeurs, on crée le graphe puis on affecte la plage au graphe. Notez que dans ce cas la colonne la plus à gauche sera considérée comme la colonne des X.

Code delphi : Sélectionner tout
1
2
3
4
rMaPlage:=MaFeuille.Range['A1','C20']; 
MonGraph:=MonClasseur.Sheets.Add(emptyparam,emptyparam,1,xlChart,0) as _chart; 
MonGraph.ChartType:=xlXYScatter; 
MonGraph.SetSourceData(rMaPlage,xlColumns);

Mis à jour le 18 janvier 2014 bidou

C'est la méthode la plus puissante, mais elle demande de la vigilance. Elle consiste à définir directement la formule qui définit la série.

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Var  
  MonClasseur : _workbook; 
  MaFeuille :_Worksheet; 
  MonGraph : _Chart; 
  rMaPlage : ExcelRange; 
  MaSerie : Series; 
  MaCollSerie : SeriesCollection; 
  compteur:integer; 
... 
begin 
  ExcelApplication1.Connect; 
  MonClasseur:=ExcelApplication1.Workbooks.Open('c:\tutoriel\tuto.xls',False,False, 
        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0); 
  ExcelApplication1.Visible[0]:=true; 
  MaFeuille:=MonClasseur.Worksheets[1] as _worksheet; 
  rMaPlage:=MaFeuille.Range['A1','C20']; 
  MonGraph:=MonClasseur.Sheets.Add(emptyparam,emptyparam,1,xlChart,0) as _chart; 
  MonGraph.ChartType:=xlXYScatter; 
  MaCollSerie:=MonGraph.SeriesCollection(EmptyParam,0) as SeriesCollection; 
  MaSerie:=MaCollSerie.NewSeries; 
  MaSerie.FormulaLocal:='=SERIE(;Feuil1!$A$2:$A$21;Feuil1!$B$2:$B$21;1)'; 
end;
Sachant qu'il est possible de générer les adresses dynamiquement du genre :
Code delphi : Sélectionner tout
1
2
3
MaSerie.FormulaLocal:='=SERIE(;'+MaFeuille.Range['A1', 
    MaFeuille.Range['A1',EmptyParam].End_[xlDown]].Address[true,true,xlA1,True,false] 
    +';Feuil1!$B$2:$B$21;1)';

Mis à jour le 18 janvier 2014 bidou

Pour créer un graphique superposé :

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
MonGraph:=MonClasseur.Sheets.Add(emptyparam, emptyparam, 1, xlChart ,0) as _chart;  
MonGraph.ChartType := xlXYScatter;  
MonGraph.SetSourceData(rMaPlage,xlColumns);  
MaSerie:=MonGraph.SeriesCollection(1,0) as series;  
MaSerie.ChartType:=xlColumnClustered;  
MaSerie:=MonGraph.SeriesCollection(2,0) as series;  
MaSerie.AxisGroup:=xlSecondary;

Mis à jour le 18 janvier 2014 bidou

Pour changer le type de graphe :

Code delphi : Sélectionner tout
1
2
3
4
MonGraph:=MonClasseur.Sheets.Add(emptyparam,emptyparam,1,xlChart,0) as _chart; 
MonGraph.ChartType:=xlXYScatter; 
MonGraph.SetSourceData(rMaPlage,xlColumns); 
MonGraph.ChartType:=xlLineMarkers;

Mis à jour le 18 janvier 2014 bidou

Pour modifier l'aspect d'une série :

Code delphi : Sélectionner tout
1
2
3
4
MaSerie:=MonGraph.SeriesCollection(1,0) as Series; 
MaSerie.Border.ColorIndex:=3; 
MaSerie.MarkerBackgroundColor:=5; 
MaSerie.Smooth:=true;
L'exemple change la couleur du trait, des marqueurs et fait le lissage.

Mis à jour le 18 janvier 2014 bidou

Pour ajouter un titre :

Code delphi : Sélectionner tout
1
2
MonGraph.HasTitle[0]:=True; 
MonGraph.ChartTitle[0].Caption:='Mon Titre';
On peut utiliser une cellule de feuille de calcul comme source d'un titre pour peu que l'on attribue un nom à celle-ci.
Code delphi : Sélectionner tout
1
2
3
MonGraph.HasTitle[0]:=True;  
MaFeuille.Cells.Item[1,7].Name:='Titre';  
MonGraph.ChartTitle[0].Caption := '='+MonClasseur.Name +'!Titre';

Mis à jour le 18 janvier 2014 bidou

Pour modifier les axes :

Code delphi : Sélectionner tout
1
2
3
4
MonAxe:=MonGraph.Axes(xlValue,xlPrimary,0) as Axis; 
MonAxe.HasTitle:=true; 
MonAxe.MinimumScale:=20; 
MonAxe.AxisTitle.Caption:='ordonnées';

Mis à jour le 18 janvier 2014 bidou

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.