Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

colorier secteur d'un graphique

5 réponses
Avatar
jean-luc Guitard
bonsoir,
Dans ce bout de programme qui colorie dans un graphique les secteurs par ordres du plus grand au plus petit (bleu, vert,
rouge)
transmis par Daniel.C qui fonctionne très bien, sauf dans le cas ou il n'y a qu'une seule valeur elle devrait ce
colorier en bleu
mais elle se colorise en vert , si vous savez modifier la macro merci, car je n'ai pas compris cette macro, je suis
débutant...

With Graphe.Chart.SeriesCollection(1)
Var = .Values
cols = Array(RGB(0, 241, 0), RGB(232, 0, 0), RGB(0, 204, 255))
vals = Array(Application.Min(Var), Application.Large(Var, 2), Application.Max(Var))
For a = 1 To 3
X = Application.Index(cols, Application.Match(Var(a), vals, 0))
.Points(a).Interior.Color = X
Next a
End With

5 réponses

Avatar
LSteph
Bonjour,

En inversant les cols et les vals cela devrait le faire non..??

Nota:
transmis par Daniel.C qui fonctionne très bien


Voilà déjà une bonne nouvelle pour un début d'année

;o)

Cordialement.

--
LSteph


On 4 jan, 17:36, "jean-luc Guitard" wrote:
bonsoir,
Dans ce bout de programme qui colorie dans un graphique les secteurs par ordres du plus grand au plus petit (bleu, vert,
rouge)
transmis par Daniel.C qui fonctionne très bien, sauf dans le cas ou il n'y a qu'une seule valeur elle devrait ce
colorier en bleu
mais elle se colorise en vert , si vous savez modifier la macro merci, ca r je n'ai pas compris cette macro, je suis
débutant...

 With Graphe.Chart.SeriesCollection(1)
                            Var = .Values
                            cols = Array(RG B(0, 241, 0), RGB(232, 0, 0), RGB(0, 204, 255))
                            vals = Array(Ap plication.Min(Var), Application.Large(Var, 2), Application.Max(Var))
                                For a = 1 To 3
                                    X = Application.Index(cols, Application.Match(Var(a), vals, 0))
                                            .Points(a).Interior.Color = X
                                Next a
                        End With
Avatar
jean-luc Guitard
Merci LSteph c'est nickel

"LSteph" a écrit dans le message de groupe de discussion :

Bonjour,

En inversant les cols et les vals cela devrait le faire non..??

Nota:
transmis par Daniel.C qui fonctionne très bien


Voilà déjà une bonne nouvelle pour un début d'année

;o)

Cordialement.

--
LSteph


On 4 jan, 17:36, "jean-luc Guitard" wrote:
bonsoir,
Dans ce bout de programme qui colorie dans un graphique les secteurs par ordres du plus grand au plus petit (bleu,
vert,
rouge)
transmis par Daniel.C qui fonctionne très bien, sauf dans le cas ou il n'y a qu'une seule valeur elle devrait ce
colorier en bleu
mais elle se colorise en vert , si vous savez modifier la macro merci, car je n'ai pas compris cette macro, je suis
débutant...

With Graphe.Chart.SeriesCollection(1)
Var = .Values
cols = Array(RGB(0, 241, 0), RGB(232, 0, 0), RGB(0, 204, 255))
vals = Array(Application.Min(Var), Application.Large(Var, 2), Application.Max(Var))
For a = 1 To 3
X = Application.Index(cols, Application.Match(Var(a), vals, 0))
.Points(a).Interior.Color = X
Next a
End With



Avatar
DanielCo
Nota:
transmis par Daniel.C qui fonctionne très bien


Voilà déjà une bonne nouvelle pour un début d'année

;o)

Cordialement.

--
LSteph



Bonjour LSteph.
... mais qui nécessite quelques explications :

With graphe.Chart.SeriesCollection(1)
'Var est une variable matrice où l'on met les valeurs de la série
Var = .Values
'Cols est une variable matrice où l'on met les couleurs, la
première correspondant
'à la plus petite valeur
cols = Array(RGB(0, 232, 0), RGB(241, 0, 204), RGB(0, 0, 255))
'Vals est une variable matrice où l'on met les valeurs dans l'ordre
croissant
vals = Array(Application.Min(Var), Application.Large(Var, 2),
Application.Max(Var))
'on boucle sur les points de la série
For i = 1 To 3
'on cherche la position de la valeur dans la variable vals...
'et on récupère la couleur ayant la même position dans cols
x = Application.Index(cols, Application.Match(Var(i), vals, 0))
'on applique cette couleur au point
.Points(i).Interior.Color = x
Next i
End With
Cordialement.
Daniel
Avatar
LSteph
Bonjour Daniel,

... et aussi un petit HS

Bonne Année.

--
LSteph


On 4 jan, 21:29, DanielCo wrote:
> Nota:
>> transmis par Daniel.C qui fonctionne très bien
> Voilà déjà une bonne nouvelle pour un début d'année

> ;o)

> Cordialement.

> --
> LSteph

Bonjour LSteph.
... mais qui nécessite quelques explications :

With graphe.Chart.SeriesCollection(1)
    'Var est une variable matrice où l'on met les valeurs de la s érie
    Var = .Values
    'Cols est une variable matrice où l'on met les couleurs, la
première correspondant
    'à la plus petite valeur
    cols = Array(RGB(0, 232, 0), RGB(241, 0, 204), RGB(0, 0, 255))
    'Vals est une variable matrice où l'on met les valeurs dans l'o rdre
croissant
    vals = Array(Application.Min(Var), Application.Large(Var, 2),
Application.Max(Var))
    'on boucle sur les points de la série
    For i = 1 To 3
        'on cherche la position de la valeur dans la variable val s...
        'et on récupère la couleur ayant la même position d ans cols
        x = Application.Index(cols, Application.Match(Var(i), v als, 0))
        'on applique cette couleur au point
        .Points(i).Interior.Color = x
    Next i
End With
Cordialement.
Daniel
Avatar
news.free.fr
Bonjour et, également, bonne année.
Daniel


Bonjour Daniel,

... et aussi un petit HS

Bonne Année.

--
LSteph