Filtrer les plus grandes valeurs et masquer les cellules vides - VBA

jacky128

XLDnaute Nouveau
Bonjour,

Je sollicite de l'aide sur ce forum car j'ai besoin d'utiliser le langage VBA (Excel 2003) afin de ne faire apparaître que certaines lignes d'un tableau.

En pièce jointe, j'ai mis un fichier comprenant le tableau que j'aimerai modifier. Le tableau présente différentes causes, dites "Cause1", qui elles-mêmes se détaillent en sous-causes, dites "Cause2" dans la colonne B. Pour chaque Cause2 il y a un temps en colonne C. La colonne D convertit ce temps en pourcentage, et la colonne E calcule le pourcentage correspondant à chaque Cause1 en sommant sur la colonne D. (CF. PJ)

Ce que je voudrais faire, c'est une macro qui filtre le tableau pour ne garder que les 3 premières Causes1 (3 premières valeurs de la colonne E), puis masque les cellules de valeur nulle de la colonne D.

Le tableau que je souhaite obtenir grâce à une macro se trouve dans le deuxième feuillet de la PJ.

Est-ce que quelqu'un a une idée de comment coder ceci en VBA avec Excel 2003 ??

Merci d'avance pour votre aide
 

Pièces jointes

  • Tableau à trier.xls
    43 KB · Affichages: 26
  • Tableau à trier.xls
    43 KB · Affichages: 28
  • Tableau à trier.xls
    43 KB · Affichages: 27

titiborregan5

XLDnaute Accro
Re : Filtrer les plus grandes valeurs et masquer les cellules vides - VBA

Bonjour jacky, le forum,
il te faut une macro absolument??

en passant par un TCD (après avoir enlevé les cellules fusionnées de la cause 1) on obtient très rapidement ce que tu recherches...

Regarde le résultat en PJ et dis-nous si ça te va...

A+
 

Pièces jointes

  • tableau à trier .XLS
    57.5 KB · Affichages: 35

jacky128

XLDnaute Nouveau
Re : Filtrer les plus grandes valeurs et masquer les cellules vides - VBA

Effectivement ce la fonctionne avec un TCD !

Cependant, mon problème est un peu plus complexe, car je veux aussi pouvoir faire un diagramme à partir de ces données, qui présente les causes sélectionnées par les filtres, mais avec des couleurs bien particulières: chaque barre du diagramme doit être de la couleur de la case correspondante dans le tableau. (cf. fichier en PJ)

Avec un tableau classique, j'utilisais le code suivant:

Code:
Dim Sér As Series, PlgX As Range, Zon As Range, Cels As Range, I As Long
    Set Sér = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
    Set PlgX = Application.Range(Split(Sér.Formula, ",")(1))
    For Each Zon In PlgX.SpecialCells(xlCellTypeVisible)
        For Each Cels In Zon
            I = I + 1: Sér.Points(I).Interior.Color = Cels.Interior.Color
            Next Cels, Zon

Cependant il ne fonctionne plus avec le tableau croisé dynamique !

Quelqu'un connait-il une solution pour modifier les valeurs de mon diagramme de la sorte ?

PS: le tableau est amené à changer régulièrement, le diagramme doit donc pouvoir s'adapter lorsque les valeurs changent dans le tableau, et donc que les causes sélectionnées changent aussi ...
 

Pièces jointes

  • Tableau à trier.xls
    64.5 KB · Affichages: 35
  • Tableau à trier.xls
    64.5 KB · Affichages: 47
  • Tableau à trier.xls
    64.5 KB · Affichages: 48

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40