Mise en forme d'un graphique Excel via c#

Résolu
CREZ59
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
- 22 août 2006 à 09:28
CREZ59
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
- 22 août 2006 à 11:28
Bonjour à tous,
Je rencontre un soucis au moment où je modifier les couleurs de mes series dans un graphique que je génére dans Excel via C#.
Je code ci dessous montre comment j'ajoute un graphique dans mon classeur.
Mais après cela je n'arrive pas à changer les couleurs des series.



//Insertion d'une nouvelle feuille avec un graphique
_Chart Graphe = (_Chart)Classeur.Sheets.Add(Classeur.Sheets[2],oMissing,1,XlWBATemplate.xlWBATChart);



//Propriétés du Graphique
Graphe.ChartType = XlChartType.xl3DPie;
Graphe.Elevation = 45;
Graphe.SetSourceData(Feuille.get_Range(cellDepart, cellFin),XlRowCol.xlRows);
Graphe.ChartTitle.Caption = titreGraphique;
Graphe._ApplyDataLabels (XlDataLabelsType.xlDataLabelsShowValue,false,true,true);


j'ai essayer un certains nombre de choses comme par exemple:



Series serieP = (Series)Graphe.SeriesCollection(1);
serieP.Interior.Color = "#00ff00";


ou autre choses du même style j'ai toujours l'erreur:



"System.Runtime.InteropServices.COMException (0x800A03EC): Exception de HRESULT : 0x800A03EC. at Microsoft.Office.Interop.Excel._Chart.SeriesCollection(Object Index)..."


Je ne sais plus quoi essayer. Je recherche de l'aide.


Amicalement,
Christophe.

2 réponses

CREZ59
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
22 août 2006 à 11:28
Merci pour ta réponse mais j'ai trouvé le soucis, en fait il y avait 2 erreurs:

- la première est effectivement les couleurs en int et tu peux aller au de làs de 16 car j'utilise le ColorIndex
- la 2eme : 
   le bout de code utiliser est en fait:
      for(int i= 1;i<nbreCol-1;i++)
      {
          Series serieP = (Series)Graphe.SeriesCollection(i);
          serieP.Interior.ColorIndex = Convert.ToInt32(couleurSeries[i]);
          serieP.Border.ColorIndex = 1;
          serieP.Border.Weight = 2;
      }
Bizarement la ligne " Series serieP = (Series)Graphe.SeriesCollection(i); "me causé l'erreur alors que si je met en dur 1 a la place de i cela fonctionne.
alors j'ai tranformer mon code comme si dessous en démarrant le i à 0 et en mettant "1+i".
      for(int i =0;i<nbreCol-1;i++)
      {
          Series serieP = (Series)Graphe.SeriesCollection(1+i);
          serieP.Interior.ColorIndex = Convert.ToInt32(couleurSeries[i]);
          serieP.Border.ColorIndex = 1;
          serieP.Border.Weight = 2;
      }

et là sa fonctionne.
-------------
Amicalement,

Christophe.
3
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
22 août 2006 à 11:18
si mes souvenirs sont bons... il me semble que les couleurs ne sont que des int allant de 0 (1?) à 16.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0