Excel : creation graph Bulles & ajout series

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>

4 réponses

  1. 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
    1. 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
      1. 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
        1. 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
        2. 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
        3. 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
        4. 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
        5. 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
      2. 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