Graphiques secteurs: dégradé automatique selon valeur
Le
gterras
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
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

Poser une question


Quelques pistes de recherche :
http://www.excelabo.net/moteurs/mot...=graphique
http://www.polykromy.com/excel/poly...p-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...c.fr.excel
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
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
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
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
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
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"
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
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"
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
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"