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