Bonjour a tous!
Voila mon problème:
Je souhaite créer un PieChart a partir de données qui se trouvent sur une feuille de calcul. Cependant, ces données peuvent être vides a certains endroits. J'aimerais donc copier mes données dans une feuille temporaire, faire une sorte de tri pour supprimer les données vides et enfin tracer un graphique a partir de ces nouvelles données triées!
(A moins qu'il existe une méthode pour demander de tracer un graphique sans les données vides!)
Voici le code que j'ai écrit pour l'instant:
Worksheets.Add after:=Sheets(Worksheets.Count)
Dim Valeur As Integer
Dim i As Integer
Dim TabAbscisses() As String 'TabAbscisse corrsponds aux noms des projets
Dim TabOrdonnees() As Integer 'TabOrdonnees corresponds aux heures
'Remplissage tableaux
ReDim TabAbscisses(0 To ProjectEndColumn - ProjectStartColumn - 1) 'donne le nombre de projets Global
ReDim TabOrdonnees(0 To ProjectEndColumn - ProjectStartColumn - 1)
For i = 0 To UBound(TabAbscisses())
TabAbscisses(i) = Sheets(NumPage).Cells(4, i + 5) 'i+5 car le premier projet est a la colonne E
TabAbscisses(i) = Sheets(NumPage).Cells(NumLine, i + 5)
Next i
'tri décroissant
Do
Valeur = 0
For i = 0 To UBound(TabOrdonnees) - 1
If TabOrdonnees(i) = "" Then
TabOrdonnees(i) = TabOrdonnees(i + 1)
Set TabOrdonnees(i + 1) = ""
TabAbscisses(i) = TabOrdonnees(i + 1)
Set TabAbscisses(i + 1) = ""
Valeur = 1
End If
Next i
Loop While Valeur = 1
Charts.Add
'Définit la localisation du graphique:
'dans la feuille de calcul (Summary pour cet exemple)
ActiveChart.Location _
Where:=xlLocationAsObject, Name:=Sheets("Summary")
'Ajoute une série dans le graphique
With ActiveChart
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = TabAbscisses() 'Abscisses
.SeriesCollection(1).Values = TabOrdonnees() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlPie
.SeriesCollection(1).Name = Sheets(NumPage).Cells(NumLine, 1).Value
End With
J'ai un probleme de compilation avec " Set TabOrdonnees(i + 1) = "" " ou il y a écrit "Object required"
Et puis il va sûrement y avoir un problème avec le dernier élément de mon tableau avec cette méthode de tri.
Voila je suis un peu perdu, est-ce que quelqu'un aurait une idée de la manière dont je pourrais résoudre mon problème?
Merci beaucoup pour votre aide!
Voila mon problème:
Je souhaite créer un PieChart a partir de données qui se trouvent sur une feuille de calcul. Cependant, ces données peuvent être vides a certains endroits. J'aimerais donc copier mes données dans une feuille temporaire, faire une sorte de tri pour supprimer les données vides et enfin tracer un graphique a partir de ces nouvelles données triées!
(A moins qu'il existe une méthode pour demander de tracer un graphique sans les données vides!)
Voici le code que j'ai écrit pour l'instant:
Worksheets.Add after:=Sheets(Worksheets.Count)
Dim Valeur As Integer
Dim i As Integer
Dim TabAbscisses() As String 'TabAbscisse corrsponds aux noms des projets
Dim TabOrdonnees() As Integer 'TabOrdonnees corresponds aux heures
'Remplissage tableaux
ReDim TabAbscisses(0 To ProjectEndColumn - ProjectStartColumn - 1) 'donne le nombre de projets Global
ReDim TabOrdonnees(0 To ProjectEndColumn - ProjectStartColumn - 1)
For i = 0 To UBound(TabAbscisses())
TabAbscisses(i) = Sheets(NumPage).Cells(4, i + 5) 'i+5 car le premier projet est a la colonne E
TabAbscisses(i) = Sheets(NumPage).Cells(NumLine, i + 5)
Next i
'tri décroissant
Do
Valeur = 0
For i = 0 To UBound(TabOrdonnees) - 1
If TabOrdonnees(i) = "" Then
TabOrdonnees(i) = TabOrdonnees(i + 1)
Set TabOrdonnees(i + 1) = ""
TabAbscisses(i) = TabOrdonnees(i + 1)
Set TabAbscisses(i + 1) = ""
Valeur = 1
End If
Next i
Loop While Valeur = 1
Charts.Add
'Définit la localisation du graphique:
'dans la feuille de calcul (Summary pour cet exemple)
ActiveChart.Location _
Where:=xlLocationAsObject, Name:=Sheets("Summary")
'Ajoute une série dans le graphique
With ActiveChart
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = TabAbscisses() 'Abscisses
.SeriesCollection(1).Values = TabOrdonnees() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlPie
.SeriesCollection(1).Name = Sheets(NumPage).Cells(NumLine, 1).Value
End With
J'ai un probleme de compilation avec " Set TabOrdonnees(i + 1) = "" " ou il y a écrit "Object required"
Et puis il va sûrement y avoir un problème avec le dernier élément de mon tableau avec cette méthode de tri.
Voila je suis un peu perdu, est-ce que quelqu'un aurait une idée de la manière dont je pourrais résoudre mon problème?
Merci beaucoup pour votre aide!