VBA - appliquer ce code à deux graph au lieu de un

VBA - appliquer ce code à deux graph au lieu de un - VB/VBA/VBS - Programmation

Marsh Posté le 04-07-2016 à 11:53:21    

Salut,
 
J'ai récupéré un super code mais je cherche à l'appliquer à deux graphiques au lieu d'un seul. Que faut-il changer ?  
 
Ca coince quand je veux modifier Set objChart = wsChart.ChartObjects(1) avec genre Count à la place...
 
Merci [:salutat1ons]
 
 
Option Explicit
 
Public Sub LabelAndColor()
Dim wb As Workbook
Dim wsData As Worksheet, wsChart As Worksheet
Dim objChart As ChartObject
Dim i As Long
 
    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("données indiv pour graph" )
    Set wsChart = wb.Worksheets("Graphiques" )
    Set objChart = wsChart.ChartObjects(1)
   
With objChart.Chart.SeriesCollection(1)
        .ApplyDataLabels Type:=xlDataLabelsShowLabel
        For i = 1 To .Points.Count
            With .Points(i)
                .DataLabel.Text = wsData.Cells(i + 2, 1)
                .DataLabel.Font.Size = 9
                .MarkerBackgroundColorIndex = _
                wsData.Cells(i + 2, 1).Interior.ColorIndex
            End With
 
        Next i
    End With
 
    Set objChart = Nothing
    Set wsChart = Nothing: Set wsData = Nothing
 
End Sub

Reply

Marsh Posté le 04-07-2016 à 11:53:21   

Reply

Marsh Posté le 07-07-2016 à 08:48:42    

Salut,
 
Avant toutes choses, merci de placer ton code entre balises c/c++, cela permettra une meilleure lisibilité et ajoutera les numéros de lignes ...
 
Dans ton code, ajoute et/ou modifie les lignes :

Code :
  1. Option Explicit
  2. Public Sub LabelAndColor()
  3. Dim wb As Workbook
  4. Dim wsData As Worksheet, wsChart As Worksheet
  5. Dim objChart As ChartObject
  6. Dim i As Long
  7.     Set wb = ActiveWorkbook
  8.     Set wsData = wb.Worksheets("données indiv pour graph" )
  9.     Set wsChart = wb.Worksheets("Graphiques" )
  10. -------> For z = 1 to wsChart.ChartObjects.Count
  11.     Set objChart = wsChart.ChartObjects(1) ---- devient -----> Set objChart = wsChart.ChartObjects(z)
  12.  
  13. With objChart.Chart.SeriesCollection(1)
  14.         .ApplyDataLabels Type:=xlDataLabelsShowLabel
  15.         For i = 1 To .Points.Count
  16.             With .Points(i)
  17.                 .DataLabel.Text = wsData.Cells(i + 2, 1)
  18.                 .DataLabel.Font.Size = 9
  19.                 .MarkerBackgroundColorIndex = _
  20.                 wsData.Cells(i + 2, 1).Interior.ColorIndex
  21.             End With
  22.         Next i
  23.     End With
  24.     Set objChart = Nothing
  25. -------> Next z
  26.     Set wsChart = Nothing: Set wsData = Nothing
  27. End Sub


 
En clair, fait une boucle sur tous les objets ChartObjects de ta feuille ...


Message édité par Chelmi18 le 07-07-2016 à 08:51:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed