[VBA] Correction code classement auto

Bonsoir,

J'utilise ce code pour classer automatiquement deux colonnes ('A' et 'P') ; il a l'air de fonctionner, mais ça ne donne rien, aucune opération ne semble réalisée. Vous auriez une idée d'où ça peut provenir ?

Public Sub classauto()

Dim ws3i As Worksheet
Dim lr7 As Long

Set ws3i = Worksheets("A")
lr7 = ws3i.Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(4, 1), Cells(4, 16)).Sort _
            key1:=Range(Cells(4, 1), Cells(lr7, 1)), order1:=xlAscending, dataoption1:=xlSortNormal, _
            key2:=Range(Cells(4, 16), Cells(lr7, 16)), order2:=xlAscending, dataoption2:=xlSortNormal

End Sub

Merci de votre aide,

Bonne soirée !

Bonsoir,

habituellement la "key" de tri est une cellule. et là vous utilisez une plage ?

peut être comme ça (en rattachant les plages à une feuille pour être sûr de la feuille triée ) :

With ws3i
lr7 = .Cells(Rows.Count, 1).End(xlUp).Row

.Range(.Cells(4, 1), .Cells(4, 16)).Sort _
            key1:=.Cells(4, 1, order1:=xlAscending, dataoption1:=xlSortNormal, _
            key2:=.Cells(4, 16), order2:=xlAscending, dataoption2:=xlSortNormal

Edit : Ca ne sert à rien de déterminer la dernière ligne remplie, si l'information ne sert pas à définir la plage de tri ??

Bonsoir,

Merci de votre aide.

J'ai testé et il ne se passe toujours rien. Le code s'exécute sans erreur, mais sans résultat non plus ^^'

Ah mince, je viens de voir qu'il manque le document joint..

Je le rajoute, avec ton exemple de code !

habituellement la "key" de tri est une cellule. et là vous utilisez une plage ?

Ca ne sert à rien de déterminer la dernière ligne remplie, si l'information ne sert pas à définir la plage de tri ??

D'accord, je pensais pouvoir le faire comme ça, je vais tester sans utiliser de plage alors.

Même en n'indiquant pas de plage ça ne fonctionne pas. Je ne comprend pas.

    ActiveWorkbook.Worksheets("A").Sort _
    Key:=Range("A3:A55000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal, _
    Key2:=Range("P3:P55000"), SortOn2:=xlSortOnValues, Order2:=xlAscending, DataOption2:=xlSortNormal

Bonsoir,

En fait c'était simple...

Public Sub classauto()
Range("A3:P50000").Sort Key1:=Range("A3"), Key2:=Range("P3")
End Sub

A priori, ça fonctionne.

Bonne soirée !

Rechercher des sujets similaires à "vba correction code classement auto"