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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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