Améliorer code vba pour Graphique

argaz01

XLDnaute Junior
Bonjour tout le monde,

Pouvez-vous me dire pourquoi le code suivant me renvoie l'erreur: l'élément portant ce nom est introuvable au niveau de la 11ème ligne. En effet, j'aimerais réaliser un graph en camembert à partir d'un tableau à 2 colonnes que j'ai préalablement trié (somme des doublons) et ce à l'aide de vba. Sauf que je n'arrive qu'à faire un code qui permet de placer l'élément de base du graphique sans pouvoir le personnaliser.
Voici le code en question:
Code:
Sub CamembertAMF()
Set MaZone = Selection.CurrentRegion
MaFeuille = ActiveSheet.Name
Charts.Add
With ActiveChart
    .ChartType = xl3DPie
    .SetSourceData Source:=MaZone, PlotBy:=xlColumns
    .Location Where:=xlLocationAsObject, Name:=MaFeuille
End With
MonGraph = Right(ActiveChart.Name, Len(ActiveChart.Name) - InStr(1, ActiveChart.Name, " "))
With ActiveSheet.Shapes(MonGraph)
    .Top = ActiveSheet.[D3].Top
    .Left = ActiveSheet.[D3].Left
    .Height = ActiveSheet.[D3:J26].Height
    .Width = ActiveSheet.[D3:J26].Width
End With
End Sub

en vous remerciant d'avance

Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Améliorer code vba pour Graphique

Bonjour,

essaye peut être ceci, à adapter :

Code:
Sub test()
Dim mazone As Range, c As ChartObject
Set mazone = Selection.CurrentRegion
Set c = Feuil1.ChartObjects.Add(Range("D3").Left, Range("D3").Top, 350, 150)
With c.Chart
    .ChartType = xl3DPie
    .SetSourceData Source:=mazone, PlotBy:=xlColumns
End With
End Sub

bon après midi
@+
 

argaz01

XLDnaute Junior
Re : Améliorer code vba pour Graphique

Dois-je remplacer le terme mazone dans la ligne
Code:
Set mazone = Selection.CurrentRegion
ou le laisser comme tel, parceque là j'ai une erreur sur cette ligne "propriété ou méthode non gérée par cet objet".

Comment procéder? Et merci


Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Améliorer code vba pour Graphique

Re,

oui présent dans mon code

Code:
Dim mazone As Range, c As ChartObject
Set mazone = Selection.CurrentRegion

attention, s'applique à la selection sur la feuille active, si tes données commencent en a1 sur toute la région courante, tu peux également coder ainsi :

Code:
Dim mazone As Range, c As ChartObject
Set mazone = Range("A1").CurrentRegion

en espérant que tu ais placé le code dans un module standard...
 

Pierrot93

XLDnaute Barbatruc
Re : Améliorer code vba pour Graphique

Re,

modifie ainsi :

Code:
Sub test()
Dim mazone As Range, c As ChartObject
Set mazone = Range("A1").CurrentRegion
Set c = Feuil1.ChartObjects.Add(Range("D3").Left, Range("D3").Top, [D3:J26].Width, [D3:J26].Height)
With c.Chart
    .ChartType = xl3DPie
    .SetSourceData Source:=mazone, PlotBy:=xlColumns
    .ChartTitle.Text = "montitre"
    .ApplyDataLabels xlDataLabelsShowPercent
End With
End Sub
 

argaz01

XLDnaute Junior
Re : Améliorer code vba pour Graphique

Bonjouir tout le monde,

Merci à toi pierrot93, ton code est très bon, cependant il ne me renvoie pas les bons % de mon tableau (colonne B) d'ailleurs j'ai le même résultat en procedant sans vba dans excel et je dois toujours cocher la case valeur et décocher la case % dans option du graph/étiquette de données. Peut-tu m'éclairer sur ce point stp. En te remerciant d'avance.

Cordialment
 

argaz01

XLDnaute Junior
Re : Améliorer code vba pour Graphique

C'est bon pierrot93, j'ai résolu l'erreur il fallait juste changer dans la dernière ligne Percent par Value et ça marche. Merci encore pour tes suggestions et bonne fin de journée à toi.


Cordialement
 

Discussions similaires

Réponses
1
Affichages
196
Réponses
0
Affichages
176

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz