Excel : creation graph Bulles & ajout series
Elodie
-
Elodie -
Elodie -
Bonjour,
Je cherche à créer un graphique à bulles via une macro sachant que le nombre de séries peut être variable. J'ai fait la tentative de code infructueuse ci-dessous :
Sub CreationGraphBulles()
Dim u As Long
Dim w As Long
For u = 1 To 100
For w = 1 To 100
Range("Bulles").Select
Charts.Add
ActiveChart.ChartType = xlBubble
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("Bulles"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(w).XValues = Cells(u, 2)
ActiveChart.SeriesCollection(w).Values = Cells(u, 3)
ActiveChart.SeriesCollection(w).BubbleSizes = Cells(u, 4)
ActiveChart.SeriesCollection(w).Name = Cells(u, 1)
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next u
Next w
End Sub
Et ça me donne une erreur de compilation : référence de variable de controle incorrecte dans NExt
Le fichier à cette adresse : http://www.cijoint.fr/cjlink.php?file=cj201108/cijJQi6QsB.xls
Merci de votre aide
Elodie
<config>Windows XP / Internet Explorer 8.0</
config>
Je cherche à créer un graphique à bulles via une macro sachant que le nombre de séries peut être variable. J'ai fait la tentative de code infructueuse ci-dessous :
Sub CreationGraphBulles()
Dim u As Long
Dim w As Long
For u = 1 To 100
For w = 1 To 100
Range("Bulles").Select
Charts.Add
ActiveChart.ChartType = xlBubble
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("Bulles"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(w).XValues = Cells(u, 2)
ActiveChart.SeriesCollection(w).Values = Cells(u, 3)
ActiveChart.SeriesCollection(w).BubbleSizes = Cells(u, 4)
ActiveChart.SeriesCollection(w).Name = Cells(u, 1)
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next u
Next w
End Sub
Et ça me donne une erreur de compilation : référence de variable de controle incorrecte dans NExt
Le fichier à cette adresse : http://www.cijoint.fr/cjlink.php?file=cj201108/cijJQi6QsB.xls
Merci de votre aide
Elodie
<config>Windows XP / Internet Explorer 8.0</
config>
4 réponses
-
Bonjour,
Si vous souhaitez seulement ajouter des données avec une actualisation dynamique du graphique c'est réalisable en nommant les plages avec une fonction "DECALER".
Si vous tenez à une macro ma réponse servira de "Up" -
bonjour
For u = 1 To 100 For w = 1 To 100 ... ... Next u Next w
2 boucles for ne peuvent pas se "chevaucher" ! il faudrait :For u = 1 To 100 For w = 1 To 100 ... ... Next w Next u
(ou bien ne pas préciser l'indices dans le next)
bonne suite -
Bonjour Paf,
Merci de l'idée.
J'ai inversé u et w mais ça me donne "methode range de l'objet global a échoué" et je trouve pas de solution pour que ça marche...
Tu peux m'aider, stp ?
Merci
Elodie-
-
-
actuellement le code, s'il fonctionnait , crée 100 fois la génération de 100 feuilles de graphes !!!
si j'ai bien compris :
on crée un graphe ( dans une feuille dédiée ou sur la feuille de données ? )
puis on ajoute en série les lignes de ton fichier jusqu'à la dernière remplie
si c'est ça j'essaie dès demain -
-
-
-
Re,
J'ai finalement réussi à faire mon graph en bidouillant. Si ça interersse certains voici comment j'ai fait :
Pour créer un graph avec deux bulles, j'ai crée un tableau avec 1 ligne d'intitulé de colonnnes, et deux lignes avec les données. Pour créer 2 séries (1 par ligne de données), j'ai fait un copier/coller de ma première ligne de données pour avoir 3 lignes de données dont 2 identiques.
Après, le code est le suivant :
Sub Bulles2()
'
'Macro pour Bulles 2 series
'crée le graphique en sélectionnant mes deux lignes identiques et crée ainsi une première série (SeriesCollection(1))
Range("B2:D3").Select
Charts.Add
ActiveChart.ChartType = xlBubble
ActiveChart.SetSourceData Source:=Sheets("GraphData").Range("B2:D3"), PlotBy:= _
xlColumns
ActiveChart.SeriesCollection(1).Name = "=GraphData!R2C1"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Supplier_Mapping"
ActiveChart.ChartArea.Select
ActiveChart.ChartType = xlBubble
ActiveChart.ChartType = xlBubble
ActiveChart.ChartType = xlBubble
ActiveChart.ChartType = xlBubble
'création de la deuxième série avec la 3ème ligne de données
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=GraphData!R4C2"
ActiveChart.SeriesCollection(2).Values = "=GraphData!R4C3"
ActiveChart.SeriesCollection(2).Name = "=GraphData!R4C1"
ActiveChart.SeriesCollection(2).BubbleSizes = "=GraphData!R4C4"
ActiveChart.ChartType = xlBubble
'ajout des étiquettes de donneés
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=True, ShowCategoryName:=False, _
ShowValue:=False, ShowPercentage:=False, ShowBubbleSize:=False
For n = 1 To 2
ActiveChart.SeriesCollection(n).DataLabels.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Position = xlLabelPositionCenter
.Orientation = xlHorizontal
End With
Next n
End Sub
Voilà, et pour les 10 séries que j'avais à créer, j'ai crée 10 macros... en ajoutant à chaque fois une nouvelle série (Bulles3, Bulles4...) c'est un peu long et fastidieux mais c'est tout ce que j'ai trouvé...