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 dj t pose sur ce groupe, mais la nuance est que=

j'aimerais que les couleurs soient dgrades (unicolore: 1 couleur + 1
nuance).

Pour en rajouter une couche, j'ai une 50aine de feuillet contenant
chacun un graphique, l'idal serait une macro qui convertisse tout en
mme temps.

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

Merci de l'aide
kursus
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #5427781
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
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
Le #5427761
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


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
Le #5427281
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"
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

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
Le #5427251
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


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"
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

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
Le #5427201
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




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"
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

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


Publicité
Poster une réponse
Anonyme