Excel : creation graph Bulles & ajout series

Fermé
Elodie - 25 août 2011 à 11:41
 Elodie - 31 août 2011 à 11:26
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>
A voir également:

4 réponses

tontong Messages postés 2567 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 20 novembre 2024 1 059
25 août 2011 à 14:40
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"
0
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
0
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
0
je viens de regarder ton classeur. Pas compris le but du jeu ,si ce n'est de créer 10 000 feuilles de graphes!!
0
le but c'est de créer un graph avec autant de séries que de lignes, sachant que ce nombre de ligne est variable mais maximum 25 environ
0
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
0
Bonjour Paf,

c'est ça, on crée un graphe (si possible dans une feuille dédiée) puis on ajoute en série les lignes de mon fichier jusqu'à la dernière remplie.

merci de ton aide précieuse
0
je gratte, mais, pas familier des graphes, j'ai du mal à m'en sortir.
mais ça progresse

pourquoi ne pas prendre l'ensemble des lignes en une seule fois ?
0
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é...
0