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

Graphiques secteurs: dégradé automatique selon valeur

5 réponses
Avatar
gterras
Bonjour =E0 tous,

Je suis =E0 la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < =E0 110).

La question a d=E9j=E0 =E9t=E9 pos=E9e sur ce groupe, mais la nuance est que=

j'aimerais que les couleurs soient d=E9grad=E9es (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'id=E9al serait une macro qui convertisse tout en
m=EAme temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aide
kursus

5 réponses

Avatar
Philippe.R
Bonsoir,
Quelques pistes de recherche :
http://www.excelabo.net/moteurs/motsclefs.php?mot=graphique
http://www.polykromy.com/excel/poly_main_app-vba.html
http://jacxl.free.fr/cours_xl/Graphiques.html
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message de
news:
Bonjour à tous,

Je suis à la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < à 110).

La question a déjà été posée sur ce groupe, mais la nuance est que
j'aimerais que les couleurs soient dégradées (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idéal serait une macro qui convertisse tout en
même temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aide
kursus
Avatar
Tatanka
Salut Kursus,

Une piste à adapter.
Dans cet exemple, je suppose que les trois premières feuilles
du classeur contiennent chacune un seul graphique en secteurs.

Sub Essai()
Application.ScreenUpdating = False
For i = 1 To 3
With Worksheets(i).ChartObjects(1).Chart.SeriesCollection(1)
.HasDataLabels = True
.ApplyDataLabels Type:=xlValue
For Each p In .Points
If p.DataLabel.Characters.Text > 110 Then
p.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
p.Fill.ForeColor.SchemeColor = 6
p.Fill.BackColor.SchemeColor = 5
End If
Next p
End With
Next i
Application.ScreenUpdating = True
End Sub

Serge


a écrit dans le message de news:
Bonjour à tous,

Je suis à la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < à 110).

La question a déjà été posée sur ce groupe, mais la nuance est que
j'aimerais que les couleurs soient dégradées (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idéal serait une macro qui convertisse tout en
même temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aide
kursus
Avatar
gterras
Super, merci Tatanka,

Je tente d'adapter ca a mon cas.

Cependant j'aimerais pouvoir appliquer des couleurs différentes a
chaque portion du graphique, " For Each p In .Points" est donc à
remplacer. Mais je n'arrive pas à préciser dans la macro les
différentes lignes des données sources.

Savez-vous comment faire ?

(donc comme vous avez pu vous en apercevoir, je suis nouveau dans le
merveilleux monde de la programmation VB...)

merc!


On 31 mar, 21:49, "Tatanka" wrote:
SalutKursus,

Une piste à adapter.
Dans cet exemple, je suppose que les trois premières feuilles
du classeur contiennent chacune un seul graphique en secteurs.

Sub Essai()
    Application.ScreenUpdating = False
    For i = 1 To 3
        With Worksheets(i).ChartObjects(1).Chart.SeriesCollection( 1)
            .HasDataLabels = True
            .ApplyDataLabels Type:=xlValue
            For Each p In .Points
                If p.DataLabel.Characters.Text > 110 Then
                    p.Fill.TwoColorGradient Style:=m soGradientHorizontal, Variant:=1
                    p.Fill.ForeColor.SchemeColor = 6
                    p.Fill.BackColor.SchemeColor = 5
                End If
            Next p
        End With
    Next i
    Application.ScreenUpdating = True
End Sub

Serge

a écrit dans le message de news: 2dc836d1-6b26-4f37-
Bonjour à tous,

Je suis à la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < à 110).

La question a déjà été posée sur ce groupe, mais la nuance est q ue
j'aimerais que les couleurs soient dégradées (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idéal serait une macro qui convertisse tout en
même temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aidekursus


Avatar
Tatanka
Bonjour,

Si tous tes graphiques en secteurs ont le même nombre de valeurs,
tu pourrais affecter un dégradé différent pour chaque secteur en
utilisant cette macro :

Sub Essai2()
Application.ScreenUpdating = False
Dim c1()
Dim c2()
'Nombre de valeurs
nv = Worksheets(1).ChartObjects(1).Chart.SeriesCollection(1).Points.Count

ReDim c1(1 To nv)
ReDim c2(1 To nv)

'Couleurs du dégradé
For k = 1 To nv
c1(k) = k
c2(k) = c1(k) + nv
Next k

For i = 1 To 3
With Worksheets(i).ChartObjects(1).Chart.SeriesCollection(1)
.HasDataLabels = True
.ApplyDataLabels Type:=xlValue
For Each p In .Points
j = j + 1
'If p.DataLabel.Characters.Text > 110 Then
p.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
p.Fill.ForeColor.SchemeColor = c1(j)
p.Fill.BackColor.SchemeColor = c2(j)
'End If
Next p
End With
j = 0
Next i
Application.ScreenUpdating = True
End Sub

Mais que veux-tu faire avec ton If ?

Serge


a écrit dans le message de news:
Super, merci Tatanka,

Je tente d'adapter ca a mon cas.

Cependant j'aimerais pouvoir appliquer des couleurs différentes a
chaque portion du graphique, " For Each p In .Points" est donc à
remplacer. Mais je n'arrive pas à préciser dans la macro les
différentes lignes des données sources.

Savez-vous comment faire ?

(donc comme vous avez pu vous en apercevoir, je suis nouveau dans le
merveilleux monde de la programmation VB...)

merc!


On 31 mar, 21:49, "Tatanka" wrote:
SalutKursus,

Une piste à adapter.
Dans cet exemple, je suppose que les trois premières feuilles
du classeur contiennent chacune un seul graphique en secteurs.

Sub Essai()
Application.ScreenUpdating = False
For i = 1 To 3
With Worksheets(i).ChartObjects(1).Chart.SeriesCollection(1)
.HasDataLabels = True
.ApplyDataLabels Type:=xlValue
For Each p In .Points
If p.DataLabel.Characters.Text > 110 Then
p.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
p.Fill.ForeColor.SchemeColor = 6
p.Fill.BackColor.SchemeColor = 5
End If
Next p
End With
Next i
Application.ScreenUpdating = True
End Sub

Serge

a écrit dans le message de news:
Bonjour à tous,

Je suis à la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < à 110).

La question a déjà été posée sur ce groupe, mais la nuance est que
j'aimerais que les couleurs soient dégradées (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idéal serait une macro qui convertisse tout en
même temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aidekursus


Avatar
Tatanka
Ave Kursus,

Points(i) correspond à la i ième valeur de ta série
Exemple :
Sub Localise_Valeur()
'Si tu entres 1 en J1, Points(1) correspond à la première valeur de ta série
'Si tu entres 2 en J1, Points(2) correspond à la deuxième valeur de ta série
'Si tu entres 3 en J1, Points(3) correspond à la troisième valeur de ta série
'...
v = [J1]
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Points(v).Select
End Sub

Serge




a écrit dans le message de news:
Super, merci Tatanka,

Je tente d'adapter ca a mon cas.

Cependant j'aimerais pouvoir appliquer des couleurs différentes a
chaque portion du graphique, " For Each p In .Points" est donc à
remplacer. Mais je n'arrive pas à préciser dans la macro les
différentes lignes des données sources.

Savez-vous comment faire ?

(donc comme vous avez pu vous en apercevoir, je suis nouveau dans le
merveilleux monde de la programmation VB...)

merc!


On 31 mar, 21:49, "Tatanka" wrote:
SalutKursus,

Une piste à adapter.
Dans cet exemple, je suppose que les trois premières feuilles
du classeur contiennent chacune un seul graphique en secteurs.

Sub Essai()
Application.ScreenUpdating = False
For i = 1 To 3
With Worksheets(i).ChartObjects(1).Chart.SeriesCollection(1)
.HasDataLabels = True
.ApplyDataLabels Type:=xlValue
For Each p In .Points
If p.DataLabel.Characters.Text > 110 Then
p.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
p.Fill.ForeColor.SchemeColor = 6
p.Fill.BackColor.SchemeColor = 5
End If
Next p
End With
Next i
Application.ScreenUpdating = True
End Sub

Serge

a écrit dans le message de news:
Bonjour à tous,

Je suis à la recherche d'une macro qui permettrait de changer
automatiquement la couleur d'un secteur d'un graphique camembert en
fonction de la valeur (disons > ou < à 110).

La question a déjà été posée sur ce groupe, mais la nuance est que
j'aimerais que les couleurs soient dégradées (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idéal serait une macro qui convertisse tout en
même temps.

Cela est-il possible ? Si oui, avez-vous des pistes ?

Merci de l'aidekursus