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>
A voir également:
- Excel : creation graph Bulles & ajout series
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
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"
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
2 boucles for ne peuvent pas se "chevaucher" ! il faudrait :
(ou bien ne pas préciser l'indices dans le next)
bonne suite
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
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
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é...
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é...