XL 2019 Trier (décroissant) valeurs dans TCD avec VBA!!

loreak

XLDnaute Nouveau
Slt,

Je cherche un code VBA permettant de trier les valeurs d'un tableau croisé dynamique dans l'ordre décroissant.
Je voudrais que la colonne "total général" soit triée.
Cependant celle-ci peut être mobile en fonction des valeurs saisies.
je vous joins un exemple du document.

Merci d'avance
 

Pièces jointes

  • tri valeur.xlsm
    310.6 KB · Affichages: 6
Solution
re,

Essayez la macro suivante :
VB:
Sub TriTotalGénéral()
    Dim PvT As PivotTable
    Dim c As Range
    Dim idx As Variant
    With ThisWorkbook.Sheets("analyse des arrêts")
        Set PvT = .PivotTables("Tableau croisé dynamique1")
        '
        ' Trouver l'index de colonne de Total général
        idx = Application.Match("Total général", PvT.ColumnRange.Rows(2), 0)
        '
        ' Si trouvé
        If Not IsError(idx) Then
        '
        ' Récupérer la cellule correspondante
        Set c = PvT.ColumnRange.Cells(idx)
        '
        ' Puis trier avec comme clef la première cellule de valeur
        PvT.DataBodyRange.Sort Key1:=c.Offset(2), Order1:=xlDescending, Type:=xlSortValues
        
        End If
    End With...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Lancez l'enregistreur de macro, click-droit sur P5 Trier->du plus grand au plus petit validez.
Arrêtez l'enregistreur de macro puis allez dans l'éditeur de macro (ALT+F11) dans le module : "Module1" vous aurez votre macro et le plaisir de l'avoir fait vous-même :)

cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
re,

Essayez la macro suivante :
VB:
Sub TriTotalGénéral()
    Dim PvT As PivotTable
    Dim c As Range
    Dim idx As Variant
    With ThisWorkbook.Sheets("analyse des arrêts")
        Set PvT = .PivotTables("Tableau croisé dynamique1")
        '
        ' Trouver l'index de colonne de Total général
        idx = Application.Match("Total général", PvT.ColumnRange.Rows(2), 0)
        '
        ' Si trouvé
        If Not IsError(idx) Then
        '
        ' Récupérer la cellule correspondante
        Set c = PvT.ColumnRange.Cells(idx)
        '
        ' Puis trier avec comme clef la première cellule de valeur
        PvT.DataBodyRange.Sort Key1:=c.Offset(2), Order1:=xlDescending, Type:=xlSortValues
        
        End If
    End With
End Sub

Qui fonctionne avec votre fichier joint.
La Colonne "Total Général" est cherchée dans le haut du TCD

Cordialement
 

Pièces jointes

  • tri valeur.xlsm
    328.9 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint