Tri sur vba [Résolu/Fermé]

Signaler
Messages postés
284
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
18 septembre 2019
-
 Ecam39 -
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

3 réponses

Messages postés
9935
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
16 mars 2021
1 132
Bonjour,
J'ai l'impression que le numéro de ligne en [A :A] est complétement inutile puisqu'il n'a aucun rapport avec le reste de la ligne.
A supprimer ou alors à quoi vous sert-il .... ?
L'ordre de tri se résume à cette ligne :
Columns("A:X").Sort Key1:=Columns("B"), Order1:=xlAscending, Key2:=Columns("C"), Order2:=xlAscending, Header:=xlGuess
Le [Columns("A:X").] fait référence aux les colonnes du tableau, à adapter selon besoin.

Le A est le N° de ligne mais pas le N° de ligne Excel, c'est un N° de comptabilisation, il n'est pas non plus lié aux désignations à trier.
J'ai réussi à faire ce tri qui pour le moment à l'air de fonctionner :)

Merci pour vos réponses.

Ca m'évite quelques manipulations^^
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
142
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