2011-04-20 6 views
0

J'ai un petit problème avec mon owsp chartspace, je voudrais dessiner un graphique comme dans l'image mais mon problème est qu'il dessine seulement pour une série que je voudrais dessiner pour le 1 le 2 et le 3 je ne sais pas comment faire ça.Dessiner un graphique avec owc chartspace dans userform vba excel

J'ai une listbox et une combobox, je sélectionne dans la zone de liste les 1,2,3 et je sélectionne parmi les combobx y ou z de telle sorte que x est fixe.

Ensuite, je mets les données dans plage (1) pour x et plage (2) pour y mais le problème est que cela ne fonctionne que pour le premier élément que je sélectionne dans la liste (dans cette image le "1")

Pourriez-vous dire ce qui ne va pas dans mon code?

enter image description here

le code vba pour dessiner le graphique dans le UserForm est:

 Private Sub drow() 
                            Dim i, k As Integer, x As Integer 
      Dim j As Integer 
      Dim Table(), Plage(2) 
      Dim id As Integer 

      id = 1 

     Do While ComboBox.Value <> idi(id, 1) 
      id = id + 1 
      Loop 

      For i = Cht.SeriesCollection.Count To 1 Step -1 
      Cht.SeriesCollection.Delete i - 1 
      Next i 

       k = 1 
      ReDim Table(ListBox.ListCount) 

     For i = 0 To ListBox.ListCount - 1 
      If ListBox.Selected(i) = True Then 
      Table(k) = ListBox.List(i) 
      k = k + 1 
      End If 
      Next i 

    With Cht 
    .HasLegend = True 
    .Legend.Position = chLegendPositionBottom 
     .HasTitle = True 
     .Title.Caption = ComboBox.Text 
     End With 

    Cht.Type = C.chChartTypeColumnClustered3D 

    With Cht 
     'first serie 
     .SeriesCollection.Add 
     .SeriesCollection(0).Caption = sheet.Cells(2, 15 + id) 
     .SeriesCollection(0).DataLabelsCollection.Add 
     .SeriesCollection(0).DataLabelsCollection(0).Position = chLabelPositionCenter 
     .SeriesCollection(0).DataLabelsCollection(0).Font.Color = RGB(255, 255, 255) 

     .SeriesCollection.Add 
     .SeriesCollection(1).Caption = sheet.Cells(2, 20)  .SeriesCollection(1).DataLabelsCollection.Add 
     .SeriesCollection(1).DataLabelsCollection(0).Position = chLabelPositionCenter 
     .SeriesCollection(1).DataLabelsCollection(0).Font.Color = RGB(255, 255, 255) 

     .SetData C1.chDimCategories, C1.chDataLiteral, Table 

     End With 

    For j = 0 To ListBox.ListCount - 1 
    If ListBox.Selected(j) = True Then 

    Plage(1) = sheet.Cells(j + 3, 15 + id) 'the Xs 
    Plage(2) = sheet.Cells(j + 3, 20) 'Les 'the Ys 

     With Cht 

     .SeriesCollection(0).SetData C1.chDimValues, C1.chDataLiteral, Plage(1) 
     .SeriesCollection(1).SetData C1.chDimValues, C1.chDataLiteral, Plage(2) 


     End With 
    Erase Plage 
    End If 
    Next j 

    End Sub 
+0

quelqu'un a une idée ???????? – Eddinho

Répondre

0

Je suis très nouveau à l'ensemble OWC et chose VB et j'avoir des ennuis moi-même, mais avez-vous essayé d'utiliser C1.chDimXValues ​​et C1.chDimYValues ​​au lieu des chDimValues ​​dans la déclaration ci-dessous:

.SeriesCollection (0) .SetData C1.chDimValues, C1.chDataL iteral, Plage (1) .SeriesCollection (1) .SetData C1.chDimValues, C1.chDataLiteral, Plage (2)

Désolé si cela peut sembler trivial, je peux voir vos compétences de codage sont beaucoup plus avancé que le mien. Bonne chance!

Questions connexes