VBA Nuage de points

Fermé
clemente91 Messages postés 2 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 29 décembre 2014 - Modifié par Whismeril le 29/12/2014 à 12:53
clemente91 Messages postés 2 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 29 décembre 2014 - 29 déc. 2014 à 13:39
Bonjour,

J'aurai besoin d'aide pour peaufiner mon code. J'ai un tableau avec trois colonnes (A,B,C) et 20 lignes, et un bouton qui génère les tableaux lorsque les lignes sont colorés.
C'est avec le nuage de points que je rencontre des problèmes, il part du principe qu'il n'y a qu'une seule série alors que j'aimerai que chaque ligne soit distincte et qu'il y ait un point qui correspond à chaque noms.
La question est donc comment je peux lui indiquer de créer plusieurs séries et intégrant la colonne A comme noms de la série, colonne B (données ici) en axe Y et Age en axe X?

Ci-dessous mon code :

Dim Donnees() As Single
Dim Noms() As String
Dim Age() As Single

For i = 6 To 26
    ThisWorkbook.Worksheets("Tableaux").Activate
    If ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Interior.Color <> RGB(255, 255, 255) Then
         ReDim Preserve Noms(i - 5)
        Noms(i - 5) = ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Value
        

        If Table.OptionButton1.Value = True Then
             ReDim Preserve Donnees(i - 5)
             ReDim Preserve Age(i - 5)
            Donnees(i - 5) = ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Offset(0, 2)
            Age(i - 5) = ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Offset(0, 1)
        End If
    End If
Next i


Dim Chartobj As ChartObject

If Table.OptionButton1.Value = True Then
    
    Set Chartobj = ActiveSheet.ChartObjects.Add(Left:=20, Width:=300, Top:=20, Height:=200)
     Chartobj.Chart.ChartType = xlXYScatter
    With Chartobj.Chart.SeriesCollection.NewSeries
                .XValues = Donnees()
                .Values = Age()
                
                
    End With
                    
End If


Je vous remercie par avance pour votre aide.

bien cordialement,

EDIT: Ajout de la coloration syntaxique.


2 réponses

Bonjour, un moyen de savoir ou aller avec VBA est d'utiliser l'outil "Enregistrer Une Macra", tu fais "à la main" ce que tu veux faire par le code et Excel transcrit ça en VBA.

Voila ce que ça donne pour 3 séries:
Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.ChartStyle = 2
    ActiveChart.ClearToMatchStyle
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = "=Feuil1!$A$1:$A$11"
    ActiveChart.SeriesCollection(1).Values = "=Feuil1!$B$1:$B$11"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).XValues = "=Feuil1!$A$1:$A$11"
    ActiveChart.SeriesCollection(2).Values = "=Feuil1!$C$1:$C$11"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(3).XValues = "=Feuil1!$D$1:$D$11"
    ActiveChart.SeriesCollection(3).Values = "=Feuil1!$D$1:$D$11"
    ActiveChart.SeriesCollection(3).XValues = "=Feuil1!$A$1:$A$11"
End Sub


Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
0
clemente91 Messages postés 2 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 29 décembre 2014
Modifié par pijaku le 29/12/2014 à 14:52
Le souci est qu'il y a un nombre x de série.

Je teste ce code mais cela ne fonctionne pas :

ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(i - 5).XValues = ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Offset(0, 4)
    ActiveChart.SeriesCollection(i - 5).Values = ThisWorkbook.Worksheets("Tableaux").Cells(i, 1).Offset(0, 2)
0