Filtrage automitique

Bonjour,

J'ai une liste de données classées de la plus grande à la plus petite. J'aimerais, si c'est possible, que lorsque je modifie une donnée dans cette liste, elle se reclasse de la plus grande à la plus petite.

Bien à vous,

Polikina

Bonsoir, un petit exemple à adapter à votre fichier.

Si j'ai bien compris il s'agît d'un tri automatique et non d'un filtre automatique.

Dans la feuille concernée, placer cette macro :

Le tri s'effectue sur la colonne A, plage A2:A100

Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A2:A100").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Ce que je fais pour trier ma collone, je vais dans l'onglet donnée/Filtrer/Du plus grand au plus petit

La solution que je vous ai donné est la même chose mais en vba et en automatique comme vous le souhaitiez.

Ci joint un exemple (à adapter selon vos besoins ou mettez un fichier exemple pour que je puisse être plus précis)

35polikina-test.zip (8.49 Ko)

J'ai essayé comme tu m'as dit, mais cela tri du plus petit au plus grand et j'aimerais que la donnée située à gauche de la colonne reste vis-à-vis.

Par exemple, dans mon fichier, j'ai Z.Chara qui est à gauche du chiffre 90. lorsque j'ajoute un chiffre supérieur à 90, j'aimerais que Z.Chara reste vis-à-vis le 90.

Voici mon fichier :

D'accord, et concrètement quelle colonne ou quelle plage faut il trier ?

Il faut trier la colonne JM du plus grand au plus petit

Merci

Un essai par bouton trier (mis à coté de la colonne concerné).

Edit : modif macro, j'avais laissé trainer un range select

Merci Beaucoup, ça à fonctionné, mais est-ce qu'il y a une façon pour que ça ce trie automatiquement (Sans avoir besoin d'appuyer sur le bouton)

j'avais testé une macro évènementiel mais pour quelle fonctionne il fallait que tu modifies l'une des colonnes que tu souhaitais trier et comme c'est des formules...

C'est sûrement possible, mais je ne sais pas faire, pas encore du moins...

A voir si les pro de la macro sont dans le coin

Ce n'est pas grave je me suis débrouillé, mais comment est-ce que je peux placer ce macro pour une autre liste et qu'elle soit reliée au même bouton?

La macro est dans un module, la voici

Sub Trier()
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Add Key:=Range("JM2:JM35" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("JL2:JM35")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Pour utiliser une seconde fois avec le même bouton (il te faudra adapter les plages de 2em tri:

Sub Trier()
'1er tri
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Add Key:=Range("JM2:JM35" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("JL2:JM35")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'2em tri
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Add Key:=Range("plage à modifier" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("plage à modifier")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

A tester, je n'ai pas mon portable du coup j'ai que XL 2003 qui ne peut pas gérer ton fichier

J'ai tout modifié et quand j'appuie sur le bouton trier, ça me donne un message d'erreur "Nom ambigu détecté : Trier" et puis rien ne se passe. Comment est-ce que je peux régler ceci?

si tu as fait un copier coller de la macro si dessous, il y avait un problème d'écriture.

J'ai corrigé de le code

il te reste à remplacer 'plage à modifier" par la plage que tu souhaites.

Ça ne fonctionne pas, à chaque fois que j'appuie sur le bouton, je vois le message d'erreur "Nom ambigu : Trier" et rein ne se passe. Comme la dernière fois. Je ne sais pas si c'est quelque chose que je fais mal, je remplace le premier "Plage à modifier" par JP2:JP35 et le second par JO2:JP35.

Tester sous XL 2013 et fonctionne chez moi.

Sub Trier()
    Range("JL2:JM35").Select
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Add Key:=Range("JM2:JM35"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("JL2:JM35")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("JO2:JP35").Select
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil5").Sort.SortFields.Add Key:=Range("JP2:JP35"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("JO2:JP35")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Autre Macro réalisé sous XL 2003

Sub Trier()
    Range("I8:J13").Sort Key1:=Range("J8"), Order1:=xlDescending, Key2:=Range("I8") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
    Range("M8:N13").Sort Key1:=Range("N8"), Order1:=xlDescending, Key2:=Range("M8") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
End Sub

J'ai re-téléchargé le fichier un peu plutôt dans la conversation et j'ai copié-collé votre formule et le tout à marché. Je ne sais pas pourquoi ça ne fonctionnait pas avec l'autre fichier, mais bref, merci d'avoir pris autant de votre temps sur mon problème

Merci,

Polikina

Rechercher des sujets similaires à "filtrage automitique"