Mise en forme d'un graphique Excel via c#

[Résolu]
Signaler
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
-
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
-
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

Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
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.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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#]