Récuperer tris sur Excel

erohares

XLDnaute Nouveau
Bonjour.

J'ai un problème sur Excel en VBA.
J'ai lu la doc (F1), fait pas mal de tests mais je n'arrive toujours pas à trouver sur quelle colonne a été fait un tri.
Je voudrais savoir s'il est possible de récupérer la ou les colonnes sur lesquelles sont faites un tri (par filtre ou par la fonction tri)

Le problème est le suivant : le classeur est dans un état X fixé par l'utilisateur (état variable : avec des filtres ou non, des tris ou non).
L'utilisateur lance une macro qui met le classeur dans un état Y (un tri particulier en général) et je voudrais qu'à la fin de la macro je puisse remettre le classeur à l'état X (que je ne connais pas puisqu'il est variable).
C'est pour ça que je voudrais récupérer les infos des filtres/tris (si possible).


J'ai trouvé comment récupérer les critères de filtres (voir code) mais je ne trouve rien sur les tris :(

Code:
Option Explicit
 
Public Sub BalayeFiltre()
    Dim I As Long
    Dim Wks As Worksheet
    Dim FieldStatus() As String
    Dim Critere() 'As String
    Dim Operateur() As Boolean
    Dim Critere2() 'As String
        
    Set Wks = Worksheets(1)
    If Not Wks.AutoFilterMode Then Range("A1").AutoFilter
    
    'tableau pour récuperer l'état (actif ou non) du filtre)
    ReDim FieldStatus(1 To Wks.AutoFilter.Filters.Count)
    'tableaux pour récuperer les critères et état d'operator de chaque colonne
    ReDim Critere(1 To Wks.AutoFilter.Filters.Count)
    ReDim Operateur(1 To Wks.AutoFilter.Filters.Count)
    ReDim Critere2(1 To Wks.AutoFilter.Filters.Count)
    
    'balayage des filtres/colonnes
    With Wks.AutoFilter
        For I = 1 To Wks.AutoFilter.Filters.Count
            If .Filters(I).On = True Then
                FieldStatus(I) = "activé"
                Critere(I) = .Filters(I).Criteria1
                If .Filters(I).Operator Then
                    Operateur(I) = .Filters(I).Operator
                    Critere2(I) = .Filters(I).Criteria2
                Else
                    Operateur(I) = False
                    Critere2(I) = ""
                End If
            Else
                FieldStatus(I) = "désactivé"
            End If
        Next
    End With
End Sub

Grâce aux tableaux, je sais comment sont définis les critères et je peux les remettre comme ils étaient, mais je n'ai rien sur les tris.

Je suis bloqué, j'ai fait la doc en long et en large et je ne trouve rien.
Merci de m'avoir lu, je vous serais très reconnaissant de m'aider.
Bonne journée.
 

Statistiques des forums

Discussions
312 497
Messages
2 088 984
Membres
103 998
dernier inscrit
Gotteland