Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tri personnalise par macro

  • Initiateur de la discussion Initiateur de la discussion whooki
  • Date de début Date de début

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 !

whooki

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterais réaliser un filtre élaboré par macro avec un bouton de commande, avec lequel je souhaiterais filtrer les valeurs supérieures ou égales à la valeur de la cellule C2, filtré également les valeurs inférieures ou égales de la cellule C3.

Ensuite j’aimerais que ça me trie les valeurs de la colonne B du plus petit au plus grand, et la colonne C du plus grand au plus petit, comme sur l’exemple ci-joint.

Merci par avance.
 

Pièces jointes

Re : Tri personnalise par macro

Bonjour,

Voilà pour le tri, je crois que cela devrait fonctionner. Chez moi c'est tout bon.

Pour le reste il faut que je relise ton post car je n'ai pas tout compris.

Code:
Range("A3").Select
    ActiveWorkbook.Worksheets("nom de ta feuille").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("nom de ta feuille").Sort.SortFields.Add Key:=Range("B1:B10" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("nom de ta feuille").Sort.SortFields.Add Key:=Range("C1:C10" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("nom de ta feuille").Sort
        .SetRange Range("A1:C10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A3").Select

Cordialement
 
Re : Tri personnalise par macro

Tu as bien changé les références, "nom de ta feuille", les cellules indiquées.
Ce n'est qu'un exemple que tu dois appliquer selon tes propres données.
 
Re : Tri personnalise par macro

Voici le code adapté à ton exemple

Code:
Range("B10:B20").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B11:B20") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("B14:B20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("C10:C20").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C11:C20") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("C14:C20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A10").Select
 
Re : Tri personnalise par macro

Oui, effectivement j'ai réadapté le code:

Application.ScreenUpdating = False
With ActiveWorkbook


ØEXT = Range("C2").Value
ØINT = Range("C3").Value



ActiveSheet.Range("$B$10:$C$21").AutoFilter Field:=1, Criteria1:=">=12 (ici je voudrais mettre range("c2").value a la place)", _
Operator:=xlAnd
ActiveSheet.Range("$B$10:$C$21").AutoFilter Field:=2, Criteria1:="<=10", _
Operator:=xlAnd
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add Key:=Range _
("C10:C21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With

End Sub
 
Re : Tri personnalise par macro

Merci de ta réponse mais j'ai réussi a faire ce que je voulais.
Ci-dessous mon code:

MErci encore

Application.ScreenUpdating = False
With ActiveWorkbook


ActiveSheet.Range("$B$10:$C$21").AutoFilter Field:=1, Criteria1:=">=" & [c2].Value, _
Operator:=xlAnd
ActiveSheet.Range("$B$10:$C$21").AutoFilter Field:=2, Criteria1:="<=" & [c3].Value, _
Operator:=xlAnd
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add Key:=Range _
("C10:C21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With

End Sub
 
- 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
Microsoft 365 Macro VBA - Excel
Réponses
12
Affichages
799
Réponses
7
Affichages
812
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…