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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Modifier le positionnement des labels sur graph Excel [Débutant]


Sujet :

C#

  1. #1
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut Modifier le positionnement des labels sur graph Excel
    Bonjour,

    Nouveau en C# et POO, je rencontre un petit soucis d'utilisation avec
    XlDataLabelPosition.

    J'arrive bien à créer mon graph, afficher les labels mais là, je sèche totalement et le net n'aide pas.

    L'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Ajout des étiquettes de données
    chart._ApplyDataLabels(XlDataLabelsType.xlDataLabelsShowValue, false, true, true);
    Ce que j'ai tenté pour les positionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Positionnement des étiquettes
    chart._ApplyDataLabels(XlDataLabelPosition.xlLabelPositionBestFit, true, true, true);
    Le problème :
    Aucune surcharge pour la méthode "_ApplyDataLabels" ne prends d'argument '1'
    J'ai beau tripatouiller le code, ben, pas mieux
    Si je renseigne les 3 premiers arguments, ça passe mais il me demande le 4ème et là, c'est le clash.

    Sur la page MSDN il n'y a que public enum XlDataLabelPosition ou un truc dans le genre il me semble mais pas d'exemple concret. De plus il n'y a pas beaucoup de doc C# là dessus.

    // **** développer sous VS2010 et adapté à VS2005

    Merci


    PS : D'ailleur, un petit plus, il y a un équivalent à
    using System.Linq; sous VS2005 ? Car il a pas l'air de connaitre.
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Cédric,

    Pourrais-tu indiquer quel objet tu instancies et de quelle bibliothèque il provient? Pourrais-tu préciser la version d'Excel?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    De ce que je pense (pas testé en C#), tu peux placer et positionner les étiquettes de données en utilisant la méthode _SetElement avec des constantes du type MsoChartElementType. La syntaxe est à adapter, car je ne connais pas assez C#pour "pondre" une syntaxe correcte, mais le concept devrait être correct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chart._SetElement(XlDataLabelPosition.msoElementDataLabelNone)
    msoElementDataLabelCenter doît être adapté en fonction:
    1. de la position souhaitée ;
    2. du type de graphique utilisé, car certains types de graphiques n'acceptent pas certaines constantes.


    C'est ainsi qu'un graphique en secteur accepte msoElementDataLabelBestFit (qui correspond à Ajuster de l'interface, voir illustration ci-dessous) alors qu'un graphique en histogramme ne peut utiliser que:
    • msoElementDataLabelNone, pas de label ;
    • msoElementDataLabelCenter, centré sur la barre de l'histogramme ;
    • msoElementDataLabelInsideEnd, au dessous du bord supérieur ;
    • msoElementDataLabelInsideBase, au dessus du bord inférieur ;
    • msoElementDataLabelOutSideEnd, au dessus de la barre.


    Les possibilités de placement correspondent aux possiblités offertes par l'interface.

    Si tu as Excel sous la main, tu peux, dans l'éditeur VBE, utiliser l'explorateur d'objet (F2) puis rechercher une des constantes citées plus haut pour voir la liste des valeurs disponibles.


    msoElementDataLabelBestFit correspond à Ajuster du graphe en secteurs





    Ajuster, et donc msoElementDataLabelBestFit, n'est pas disponible pour tous les graphiques

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Hou pinaise
    Bonjour Pierre,

    Je vais regarder tout cela ! Merci pour toutes ces infos et explications

    Pas facile dès que l'on change de langage, mais je vais voir tes pistes !
    Merci pour ces dernières ^^



    PS: Sous 2010 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Data;
    using System.Text;
    using System.IO;
    using Microsoft.Office.Interop.Excel;
    using Microsoft.Office;
    //using Microsoft.Office.Tools.Excel;
    using Microsoft.VisualStudio.Tools.Applications;
    Les références sont adaptées.
    D’ailleurs pas facile entre VS2005 et VS2010 !
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Merci pour les pistes @Pierre.

    J'ai enfin réussit à trouver et effectivement suivant les types de graphiques, le positionnement des étiquettes est à modifier.

    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
    System.Collections.IEnumerator iptEn = points.GetEnumerator();
     
                        while (iptEn.MoveNext())
                        {
                            Point p = (Point)iptEn.Current;
     
                            if (p.HasDataLabel)
                            {
                                p.DataLabel.HorizontalAlignment = Constants.xlRight;
                                p.DataLabel.Font.ColorIndex = 1;
                                p.DataLabel.Font.Size = 8;
                                p.DataLabel.Border.ColorIndex = 1;
                                p.DataLabel.Interior.ColorIndex = 2;
     
     
                                // On positionne les étiquettes
                                // p.DataLabel.Position = Microsoft.Office.Interop.Excel.XlDataLabelPosition.xlLabelPositionLeft;
                                p.DataLabel.Position = Microsoft.Office.Interop.Excel.XlDataLabelPosition.xlLabelPositionBelow;
     
                            }
     
                        }
    Cordialement,
    Chtulus
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Ravi pour toi

    Amitiés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flex4] Mettre des labels sur les points d'un graph
    Par Swarovsky dans le forum MXML
    Réponses: 0
    Dernier message: 29/10/2012, 23h12
  2. Réponses: 1
    Dernier message: 06/07/2007, 13h46
  3. Propriété transparente des Labels sur un UserControl
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/05/2007, 08h57
  4. Réponses: 3
    Dernier message: 05/03/2007, 12h54
  5. modifier l'axe des Y sur un mschart
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/10/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo