VBA : problème de tri

Bonjour,

Afin d'aider un autre membre, j'ai voulu placer un tri dans un code :

Range("H3:Q14").Sort Key1:=Range("I3"), Order1:=xlDescending, Header:=xlNo, Key2:=Range("Q3"), Order1:=xlDescending, Header:=xlNo

Bien que ma deuxième clef de tri précise ''Descending", cette colonne Q est triée de manière ''Ascending''. Avez-vous une idée pourquoi ?

J'ai provisoirement résolu mon problème en enregistrement un tri (bouton ''Tri bis''), mais j'aimerais comprendre ce problème.

Cordialement.

8tri-24.zip (15.59 Ko)

Bonjour,
2 propositions.
Bonnes fêtes de fin d'année.
Cdlt.

Sub Tri()
    Range("H3:Q14").Sort _
            Key1:=Range("I3"), _
            Order1:=xlDescending, _
            Key2:=Range("Q3"), _
            Order2:=xlDescending, _
            Header:=xlNo
End Sub

Sub Tri_Bis()
Dim rngData As Range
    Set rngData = Worksheets("Classement CRC OPEN 2017").Cells(2, 8).Resize(13, 10)
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add _
                Key:=rngData(1, 2), _
                SortOn:=xlSortOnValues, _
                Order:=xlDescending
        .SortFields.Add _
                Key:=rngData(1, 10), _
                SortOn:=xlSortOnValues, _
                Order:=xlDescending
        .SetRange rngData
        .Header = xlYes
        .Apply
    End With
End Sub

Salut Jean-Eric,

Merci pour ta réponse.

Mais ma question était plutôt : pourquoi mon code ne fonctionne pas alors que tout semble correct ?

Une idée ?

Amicalement.

bonjour Yvouille,

si ton code est bien celui-ci

Range("H3:Q14").Sort Key1:=Range("I3"), Order1:=xlDescending, Header:=xlNo, Key2:=Range("Q3"), Order1:=xlDescending, Header:=xlNo

les anomalies que je vois.

1.répétition de header:=xlno

2.order1 au lieu de order2 pour la 2ème clé

Re,
@Yvouille,
Tu as peut-être commencé le réveillon avant l'heure.
Souci de syntaxe.
Compare ta sub Tri() avec celle que j'ai proposé...
Bonne fêtes de fin d'année.
Cdlt.

Merci à vous deux pour vos solutions qui se rejoignent

J'avais regardé un peu très, très vite la première solution de Jean-Eric et comme elle était écrite sur plusieurs lignes, j'avais pensé à une solution du genre With/End with.

Mais en plaçant nos deux codes cotes à cotes, la solution saute effectivement aux yeux :

    Range("H3:Q14").Sort Key1:=Range("I3"), Order1:=xlDescending, Header:=xlNo, Key2:=Range("Q3"), Order1:=xlDescending, Header:=xlNo
    Range("H3:Q14").Sort Key1:=Range("I3"), Order1:=xlDescending, Key2:=Range("Q3"), Order2:=xlDescending, Header:=xlNo
Rechercher des sujets similaires à "vba probleme tri"