[Résolu] Réinitialiser un filtre sans réinitialiser le tri !

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 !

djodjodjo

XLDnaute Occasionnel
Bonjour à tous,

Aujourd'hui un petit souci sur les filtres et le tri, j'ai le code suivant :

Code:
With Sheets("Mafeuille")
If .FilterMode = True Then .ShowAllData
End With
qui fonctionne très bien pour "remettre mes filtres à zéro". Le problème c'est que ça enlève aussi le tri de A à Z sur une de mes colonnes, alors que je dois impérativement garder ce tri.

J'ai pensé à créer une 2ème macro qui réactiverait le tri de A à Z sur la colonne après l'exécution de la 1ère macro:
Code:
ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort.SortFields.Add Key:= _
Range("F9:F684"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
MAIS cette colonne en question peut changer de place dons si ça arrive alors à cause du Range("F9:F684") ça va me trier la mauvaise colonne de A à Z...comment faire ?

Merci d'avance !
 
Dernière édition:
Re : Réinitialiser un filtre sans réinitialiser le tri !

Re

sous condition que le titre n'apparaisse qu'une seule fois dans la feuille
nb: remplacer "titre" par le titre de la colonne

Code:
ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort.SortFields.Clear
 
Set c = ActiveSheet.Cells.Find("titre", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
  Set fin = c.Offset(65536 - c.Row).End(xlUp)
  Set plage = Range(c, fin)
End If
 
ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort.SortFields.Add Key:= _
plage , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Mafeuille").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
Re : Réinitialiser un filtre sans réinitialiser le tri !

Merci pierrejean ça fonctionne très bien. Juste une question:

J'imagine que ActiveSheet.Cells.Find va s'arrêter de chercher dès qu'il aura trouvé "titre" pour la première fois. Comment cette fonction effectue-t-elle la recherche? Par ligne puis par colonne, par colonne puis par ligne ? Au cas où "titre" devrait être présent à deux endroits, que j'impose qu'il ne soit pas avant une telle ligne ou une telle colonne.

Merci d'avance
 
Re : Réinitialiser un filtre sans réinitialiser le tri !

Pierrejean,

J'ai juste modifié ton code en mettant cette partie dans la 2ème boucle If sinon il y a une erreur '13' si "titre" a changé dans la feuille
Code:
ActiveWorkbook.Worksheets("Projets").AutoFilter.Sort.SortFields.Add Key:= _
        plage, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Projets").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        End With
 
Re : Réinitialiser un filtre sans réinitialiser le tri !

Re

J'avoue ne pas savoir comment find cherche dans le cas ou ou la recherche est effectuée sur Cells
Tu peux remplacer Cells par la plage ou tu es sur de trouver "titre" (ex: Range("A1:W10")
 
- 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

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
298
Réponses
17
Affichages
1 K
Réponses
11
Affichages
785
Réponses
6
Affichages
1 K
Réponses
1
Affichages
821
Réponses
1
Affichages
1 K
Retour