Excel VBA: Tri de données vides

  • Initiateur de la discussion Initiateur de la discussion mamax
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mamax

XLDnaute Nouveau
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!
 
Re : Excel VBA: Tri de données vides

Je viens de voir un autre problème avec ma méthode de tri:

Si le premier élément (d'indice 0) est vide, alors tout mon tableau va être vide!

En fait j'ai essayé de faire une méthode tri, car si je trace un PieChart avec des données vides par endroit (suivant mon exemple, il s'agit d'un nombre d'heure égal a zéro, cf pièce jointe), elles ne vont pas être représentées, ce qui est bien, mais le nom du projet associé au nombre d'heure apparaît quand même en légende!

Est-ce que j'ai été assez clair ^^ ?

je dois pouvoir me passer d'une méthode de tri...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
622
Réponses
3
Affichages
518
Réponses
4
Affichages
332
Réponses
7
Affichages
704
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Retour