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

Macros et VBA Excel Discussion :

[VBA-E] Changement de couleur d'un point d'une série dans un graphique ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je débute en VBA, en général j'utilise le Recorder mais là j'y arrive pas !

    J'ai une série de graphiques (camemberts) qui présentent une répartition entre plusieurs monnaie.

    J'aimerais insérer dans mon code un formattage de la couleur des points de ma série, càd j'aimerais que l'EURO soit toujours en bleu, le dollar en rouge, etc etc etc...

    J'ai réussi à le faire via 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
    Sub Macro()
     
        ActiveSheet.ChartObjects("Chart 1").Activate
        ActiveChart.SeriesCollection(1).Select
        ActiveChart.SeriesCollection(1).Points(1).Select
        With Selection.Border
            .Weight = xlThin
            .LineStyle = xlAutomatic
        End With
        Selection.Shadow = False
        With Selection.Interior
            .ColorIndex = 32
            .Pattern = xlSolid
        End With
    End Sub
    mais cela pose un problème : dans le cas proposé, EUR est égal au point(1) mais certaines fois il arrive en 2è voire en 3è position. J'aimerais donc trouver qqch du style :

    IF ActiveChart.SeriesCollection(1).Points(1) = EUR
    Then ETC......


    Mais je ne trouve pas de sol ?? Je pense que ça doit pas être trop compliqué mais j'y arrive pas...

    Merci de votre aide

    bonjour et merci de votre réponse.

    J'ai déjà parcouru et reparcouru de nombreuses fois le FAQ, qui est vraiment super ! Malheureusement je n'ai pas trouvé qqch qui semblait répondre à mon besoin.

    Peut-être parce que j'y connais vraiment pas lourd ?

    C'est quel point dans le FAQ qui traite de cela ? (désolé je promet que j'ai cherché !!!!!!!) ???

    Merci et désolé pour ces quesitons
    Images attachées Images attachées  

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tiens, j'ai trouvé ça
    Si ça peut te servir en attendant meilleure réponse.
    (je ne me souvenais même plus que j'avair répndu ça, ma mémoire n'est plus ce qu'elle était )

  3. #3
    Membre régulier Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    Au vu de tes graphiques et du tableua visible à gauche, j´imagine que si l´ordre des séries du graphique change, c´est parce que tu changes l´ordre dans le tableau de valeurs, en triant sur le champ des montants par ordre décroissant...
    en faisant simple, si tu figes l´ordre des lignes dans le tableau de valeur (tri alphabétique sur le nom des monnaies), l´ordre des séries ne devrait pas bouger.

    Attention: cette solution simple n´est valable que si tu as toujours les mêmes devises dans le tableau. Sinon, je crois qu´il faudra developper une solution faisant appel à des "array".
    J´ai l´habitude de coder comme un lance-grenades
    Alors ne vous étonnez pas si mes macros vous pétent dans les doigts...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    salut et merci pour vos réponses.

    ALors j'ai bien trouvé la méthode pour changer la couleur d'un point de ma série comme tu l'expliques dans ton autre post, mais en fait ce que je n'arrive pas à faire ce'st à fixer EUR = BLEU, USD = ROUGE, etc... (sachant que cette liste de monnaies et de couleurs sont connues).
    En fait j'aimerais checker la valeur du point (EUR ou USD par ex) et en fonction y attribuer une couleur définie.

    Je ne peux pas me baser sur la place du point dans la série (1 ou 2 etc) car en fonction de ce que j'analyse l'EUR peut se retrouver en 1ère, 2ème ou en xème position. C'est pour cela que j'aimerais jouer avec la valeur et non pas avec la position du point.

    Je ne sais pas comment on peut tester la valeur du point d'une serie ... Si je trouve cela je pourrais faire qqch du genre

    Si valeur=EUR alors BLEU
    Sinon si valeur = USD alors ROUGE
    Sinon si valeur = etc.....

    une idée pour bibi ???

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    OK alors j'ai réussi à trouver une solution ...

    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
     
    Sub MAJCcyBOP()
        Dim p As Point, maval As String, i As Integer
        i = 0
        For Each p In ActiveChart.SeriesCollection(1).Points
     'Je n'ai qu'une Collection dans mon chart, mais chaque collection a p Points
           i = i + 1
            maval = Left(p.DataLabel.Text, 3)
    'Permet de récupérer les 3 premières lettres du label de mon point
            If maval = "EUR" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 32
            ElseIf maval = "USD" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 3
            ElseIf maval = "SEK" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 4
            ElseIf maval = "CHF" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 5
            ElseIf maval = "JPY" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 6
            ElseIf maval = "YEN" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 7
            ElseIf maval = "Oth" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 19
            ElseIf maval = "GBP" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = 9
            End If
        Next p
    End Sub

    Et voilà !

    En lançant la macro, mon graphique passe chaque point de la série et lui attribue une couleur définie à l'avance.

    Ainsi, les personnes qui utilisent le rapport peuvent facilement retrouver al proportion d'Euros (c'est un graphique de type camembert), que celui-ci se trouve en première ou en xème position !

    Merci pour vos coups de pouces !!!!!!


  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    J'ai la même problématique que epfyffer mais dans le cadre d'un tableau croisé dynamique. J'ai essayé de réadapté le code que tu proposes à ma situation mais ça ne marche pas et je n'arrive pas à trouver d'où cela vient.
    Le code tourne mais les secteurs du graphique changent de couleur de manière homogène même lorsque que le datalabel du secteur est égal au texte indiqué par la fonction IF.
    J'ai essayé de rajouter "Characters" entre DataLabel et Text mais ça ne change rien... Est ce que quelqu'un aurait une idée pour résoudre le soucis ?


    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
      Dim p As Point, maval As String, i As Integer
        i = 0
        For Each p In ActiveChart.SeriesCollection(1).Points
     'Je n'ai qu'une Collection dans mon chart, mais chaque collection a p Points
           i = i + 1
            maval = p.DataLabel.Text
    'Permet de récupérer le texte du label ?
            If maval = "RECHERCHE ET DEVELOPPEMENT" Then
                ActiveChart.SeriesCollection(1).Points(i).Interior.Color = RGB(0, 0, 0)
            Else
                ActiveChart.SeriesCollection(1).Points(i).Interior.Color = RGB(30, 1000, 100)
            End If
        Next p
     
     
    End Sub
    Voilà ce que ça donne : Nom : image.jpg
Affichages : 1094
Taille : 331,8 Ko

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    J'ai trouvé la solution sur la discussion suivante
    https://www.developpez.net/forums/d1...nts-graphique/

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

Discussions similaires

  1. [XL-2007] Changement de couleur nuage de points et légende
    Par bapt298 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2012, 11h21
  2. Réponses: 6
    Dernier message: 31/10/2008, 10h37
  3. Réponses: 3
    Dernier message: 22/02/2008, 08h48
  4. [VBA-E]Changement de couleur de fond de cellule avec si
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2007, 19h21
  5. [VBA-E] changement de couleur d'un bouton
    Par stos dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2007, 18h06

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