Camembert via Macro ?!

  • Initiateur de la discussion Initiateur de la discussion Mattharm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Mattharm

XLDnaute Occasionnel
Bonsoir à tous,

Est il possible simplement de créer un camembert via une macro ?
Cela demande t il beaucoup de ligne de code.

Parce que j'aurais une centaine de camembert à réaliser donc je n'ai pas tellement envie de les faire à la main 😱 😱 😱 😱

Merci
Mattharm
 
Re : Camembert via Macro ?!

Bonsoir, re

Après une petite recherche :

Code:
Charts.Add
    ActiveChart.ChartType = xlPie
    ActiveChart.SetSourceData Source:=Sheets("Resultats").Range("G" & num_res & ":G" & num_res + 5), PlotBy:= _
        xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Resultats"
    ActiveChart.HasTitle = False
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.Legend.Select

Mais comment je peux redimensionner le graphique ??
Et le positionner sur ma page ?? 😎

Merci à tous 😉
 
Re : Camembert via Macro ?!

Bonsoir,

Voici un exemple (testable dans le fichier joint) :

Sub Camembert()
Set MaZone = Selection.CurrentRegion
MaFeuille = ActiveSheet.Name
Charts.Add
ActiveChart.ChartType = xl3DPie
ActiveChart.SetSourceData Source:=MaZone, PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=MaFeuille
End Sub

Tu veux le positionner où ?
Quel est l'élément de référence pour chaque graphique ?
 

Pièces jointes

Re : Camembert via Macro ?!

Catrice à dit:
Tu veux le positionner où ?
Quel est l'élément de référence pour chaque graphique ?


Bonsoir catrice,

en fait lorsque le camembert se crée, il se met au milieu et fait une taille assez importante !

J'aimerais pouvoir réduire sa taille, le positionner sur ma page par exemple en donnant comme coordonnée une cellule.
Et sinon comment faire pour intégrer une légende ??

Merci d'avance 😉
Mattharm
 
Re : Camembert via Macro ?!

Catrice à dit:
Bonsoir,

L'exemple ci-joint colle le graphique sur une zone définie.
La légende est automatique.

Alors la franchement, chapeau 😉
Merci beaucoup catrice 😎 😎 😎

Mattharm

ps: dernière petite question, comment fait il pour comprendre que c'est cette colonne de légende qu'il faut prendre ??
C'est le Set Mazone = Selection.Currentregion qui fait ça ??

Encore merci
 
Re : Camembert via Macro ?!

Bonjour,

Oui, c'est le Selection.Currentregion.
Le graphique est fait à partir des 2 colonnes.
Une colonne de libellés et une colonne de nombres, les nombres sont automatiquement considérés comme les étiquettes.
Et, par défaut le graphe affiche la légende.
Donc : si libellés => légende
 
Dernière édition:
Re : Camembert via Macro ?!

Voici finalement mon code :

Code:
Charts.Add
    ActiveChart.ChartType = xlPie
    ActiveChart.SetSourceData Source:=zone, PlotBy:= _
        xlColumns
    ActiveChart.HasTitle = True
    ActiveChart.ChartTitle.Text = Worksheets("Feuil2").Cells(cherche_question, 2).Value
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Resultats"
           MonGraph = Right(ActiveChart.Name, Len(ActiveChart.Name) - InStr(1, ActiveChart.Name, " "))
With ActiveSheet.Shapes(MonGraph)
    .Top = ActiveSheet.Cells(num_res, 9).Top
    .Left = ActiveSheet.Cells(num_res, 9).Left
    .Height = ActiveSheet.Range("I" & num_res & ":L" & num_res + 9).Height
    .Width = ActiveSheet.Range("I" & num_res & ":L" & num_res + 9).Width
End With

Mais seulement j'ai un soucis !
Enfin non j'en ai deux ! 🙂

Comment faire pour pouvoir afficher dans la légende, les valeurs correspondantes ??

Et comment attribuer une couleur à une valeur pour avoir à chaque fois la même couleur pour la même valeur ?? 😉

Merci
Mattharm
 
Re : Camembert via Macro ?!

Pierrot93 à dit:
Bonsoir

pour afficher les valeurs, utilises le code ci dessous :

Code:
ActiveChart.ApplyDataLabels ShowValue:=True

mais elles ne seront pas dans la légende...

bonne soirée
@+


Bonsoir Pierrot !

Merci beaucoup ! c'est bien même si ce n'est pas dans la légende 😉
Mais est il possible de ne mettre que les valeures différentes de zéro ?

Parce que là il m'ajout des traits avec marqué 0 😱

Merci
 
Re : Camembert via Macro ?!

Re

tu peux enlever les étiquettes dont la valeur est égale à 0 avec la macro ci dessous :

Code:
Dim p As Byte
With ActiveChart.SeriesCollection(1)
    For p = 1 To .Points.Count
    If .Points(p).DataLabel.Characters.Text = 0 Then _
        .Points(p).HasDataLabel = False
    Next p
End With

bonne soirée
@+
 
Re : Camembert via Macro ?!

Pierrot93 à dit:
Re

tu peux enlever les étiquettes dont la valeur est égale à 0 avec la macro ci dessous :

Code:
Dim p As Byte
With ActiveChart.SeriesCollection(1)
    For p = 1 To .Points.Count
    If .Points(p).DataLabel.Characters.Text = 0 Then _
        .Points(p).HasDataLabel = False
    Next p
End With

bonne soirée
@+

Salut pierrot !
Merci pour ton aide 😉

Mais il me dit : "impossible de lire la propriété characters de la classe Datalabel" 😱
La je dois avouer que je suis un peu battu !

Et à propos du choix de la couleur tu as une idée pierrot ?
Merci à vous tous, vous êtes géniaux 😎
 
Re : Camembert via Macro ?!

Désolé pierrot !

Tout marche bien c'est moi qui ai fait une erreur 😉

Merci pour ce code qui m'est fort utile 🙂


Pour les couleurs ce serait pas "Selection.Interior" quelque chose dans ce gout là ?

Thanks
Mattharm
 
Re : Camembert via Macro ?!

Bonjour Mattharm,

pour la couleur :

Code:
ActiveChart.SeriesCollection(1).Points([COLOR="Red"]X[/COLOR]).Interior.ColorIndex = [COLOR="red"]z[/COLOR]

ou "X" est le numéro du point dans ta série de données et "Z" le numéro d'index de la couleur.

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
265
Réponses
2
Affichages
240
Réponses
7
Affichages
686
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
313
Réponses
6
Affichages
330
Réponses
12
Affichages
644
Retour