Tri de A à Z spécifique

Bonjour,

J'aurais voulu savoir s'il existait un code pour trier mes informations dans mon tableau de manière spécifique, je m'explique : J'ai un tableau avec des entrées variables et je souhaiterais appliquer un tri de A à Z uniquement à partir d'une ligne spécifique, par exemple ma 10ème ligne, et par conséquent que les lignes [1 à 9] de mon tableau ne soient pas affectées par le tri.

Bien cordialement.

ActiveWorkbook.Worksheets("Banque_de_données").ListObjects("Tableau4").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Banque_de_données").ListObjects("Tableau4").Sort. _
        SortFields.Add Key:=Range("Tableau4[[#All],[Catégorie]]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Banque_de_données").ListObjects("Tableau4"). _
        Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

Voici le code lorsque la macro tri s'applique, la modification à faire est certainement au niveau du Key:=Range("Tableau4[[#All], si c'est le cas dois-je remplacer le #all par une plage de cellule ? Meme si mon tableau est de longueur variable ?

Bonjour,

a ma connaissance lorsque tu utilises le tri sur un objet de type table, le tri s'applique à toute la table, tu n'as pas la possibilité de choisir les lignes du tableau sur lesquelles doit s'appliquer. Une manière de contourner ce problème est de ne pas faire référence au tableau, mais directement aux plages de cellules excel.

    a = Split(ActiveWorkbook.Worksheets("Sheet1").ListObjects("table4").Range.Address, "$") ' on détermine l'adresse des cellules de la plage du tableau a(1)=première colonne, a(2)=première ligne, suivie de ":", a(3)=dernière colonne, a(4)=dernière ligne
    'on définit la plage pour le tri
    a(2) = "10:" 'la première ligne commence à 10
    r = Join(a, "$") 'r =plage
    Range(r).Sort key1:=Range(a(1) & "1"), order1:=xlDescending, Header:=no 'tri

Merci pour ta réponse, je vais de suite essayer ce que tu me proposes.

Juste une question, je veux que le tri s'applique en fonction d'un critère (soit propre à une colonne) (Par exemple un tri de produits de A à Z), est-ce que les informations du produit (sur la même ligne mais différentes colonnes) (Par exemple : Variété du produit, prix, propres à celui ci) resteront en concordance une fois le tri appliqué ?

Bonjour,

toutes les lignes du tableau sont triées sur base de la première colonne, si j'ai bien compris ta question.

C'est exact, tu as bien synthétisé mon propos !

Merci

Je débute sur VBA et je souhaiterais avoir quelques précisions quant au code que tu m'as fourni si cela ne te dérange pas. A deux reprises tu évoques "$", je dois remplacer cela par ma plage de cellules où le tri doit s'effectuer (dans ce cas une colonne) ou ma plage de cellules totales (de mon tableau) ?

Enfin, dois-je définir a(1) a(2) etc ou seulement comme tu me l'as indiqué, cad a(2). Quand je définis a(2) par la ligne où le tri doit débuter, un message d'erreur s'affiche "L'indice n'appartient pas à la sélection"

Merci encore pour ton aide

Bonjour,

pour déterminer la colonne sur laquelle faire le tri il faut adapter cette instruction

Range(r).Sort key1:=Range(a(1) & "1"), order1:=xlDescending, Header:=no 'tri

ici j'ai mis a(1) qui contient la lettre de la première colonne de ton tableau.

tu peux remplacer cette instruction par n'importe quelle colonne (que tu veux utiliser comme critère de tri) faisant partie de ton tableau.

exemple

Range(r).Sort key1:=Range("C1"), order1:=xlAscending, Header:=no 'tri

Merci pour votre aide cela fonctionne

Rechercher des sujets similaires à "tri specifique"