Tri sur vba
Résolu
Bonjour,
J'ai un tableau excel sur un nombre de lignes indéfinies (variables), je souhaiterai effectuer un tri sur 2 niveaux.
Le 1er par ordre alphabétique (colonne B)
Le second par ordre alphabétique également (colonne D)
Je voudrais faire ce tri sur l'ensemble du tableau à l'exception de la colonne A qui contient les N° de ligne, si je l'insère je me retrouve avec le N°15 au dessus du N°20, ce qui n'est pas top.
Je vous remercie pour vos réponses
J'ai un tableau excel sur un nombre de lignes indéfinies (variables), je souhaiterai effectuer un tri sur 2 niveaux.
Le 1er par ordre alphabétique (colonne B)
Le second par ordre alphabétique également (colonne D)
Je voudrais faire ce tri sur l'ensemble du tableau à l'exception de la colonne A qui contient les N° de ligne, si je l'insère je me retrouve avec le N°15 au dessus du N°20, ce qui n'est pas top.
Je vous remercie pour vos réponses
3 réponses
-
coucou,
voici le code vba :
sub tri
i=1
' permet de définir le nombre de lignes de ton tableau grace à la variable i
do while cells(I,1) <> ""
i=i+1
loop
Range(cells(1,2),cells(i,10).Select 'sélectionnes la plage de la cellule B1 à Ji
==> J représente par le 10 (si tu veux t'arrêter avant une autre colonne, remplace le 10 par le numéro de clonne )et i représentant la dernière ligne de ton tableau
'Pour la suite remplaces Feuil1 par ton nom de feuille
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(cells(2,2),cells(i,2)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(cells(2,4),cells(i,4)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range(cells(2,2),cells(i,10))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
end sub