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

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 !

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

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...
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
 
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

- 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

Réponses
1
Affichages
908
Retour