Graphiques secteurs: dégradé automatique selon valeur
5 réponses
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
<gterras@gmail.com> a écrit dans le message de
news:2dc836d1-6b26-4f37-9897-39309aa67cf0@c65g2000hsa.googlegroups.com...
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 ?
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
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
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
<gterras@gmail.com> a écrit dans le message de news: 2dc836d1-6b26-4f37-9897-39309aa67cf0@c65g2000hsa.googlegroups.com...
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 ?
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
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
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" <garno...@ENLEVER.videotron.ca> 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
<gter...@gmail.com> a écrit dans le message de news: 2dc836d1-6b26-4f37- 9897-39309aa67...@c65g2000hsa.googlegroups.com...
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 ?
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
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
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
<gterras@gmail.com> a écrit dans le message de news: 27721d7d-2fcb-4e0d-b3d6-f8fc22162792@a70g2000hsh.googlegroups.com...
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" <garno...@ENLEVER.videotron.ca> 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
<gter...@gmail.com> a écrit dans le message de news: 2dc836d1-6b26-4f37-9897-39309aa67...@c65g2000hsa.googlegroups.com...
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 ?
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
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
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
<gterras@gmail.com> a écrit dans le message de news: 27721d7d-2fcb-4e0d-b3d6-f8fc22162792@a70g2000hsh.googlegroups.com...
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" <garno...@ENLEVER.videotron.ca> 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
<gter...@gmail.com> a écrit dans le message de news: 2dc836d1-6b26-4f37-9897-39309aa67...@c65g2000hsa.googlegroups.com...
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 ?
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 ?