XL 2019 trier et classer un tableau Excel

MOEZ-TUN

XLDnaute Occasionnel
Bonjour
J'ai un tableau Excel avec des données variables , je réussi de faire le tri de ces données , mais je vais classer ces données dans un seul colonnes :


1681896002102.png
 

Pièces jointes

  • 1681895851530.png
    1681895851530.png
    28.8 KB · Affichages: 7
  • trier et CLASSER un tableau excel.xlsx
    20 KB · Affichages: 8

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
En redéfinissant le Tableau Structuré, et par le biais de Power Query (en natif dans ta version Excel2019), voici ce qu'on peut obtenir.
Clic droit dans la requête, "Actualiser", pour mettre à jour.
Bonne journée
Edit : Hi, Hasco
Effectivement, plus propre, et en plus, t'as trouvé le code Balise kivabien... 🤪
 

Pièces jointes

  • PQ_ trier et CLASSER un tableau excel.xlsx
    20.8 KB · Affichages: 6
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

Par power query également :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    #"En Colonne" = List.Transform(Table.ColumnNames(Source), each Table.Column(Source,_)),
    #"Converti en table" = Table.FromList(#"En Colonne", Splitter.SplitByNothing(), {"Order"}, null, ExtraValues.Error),
    #"Order développé" = Table.ExpandListColumn(#"Converti en table", "Order"),
    #"Lignes filtrées" = Table.SelectRows(#"Order développé", each ([Order] <> null and [Order] <> ""))
in
    #"Lignes filtrées"

Je n'ai pas inclus le noms des colonnes car j'ai pensé qu'ils n'étaient là (hors tableau résultat) que pour démonstration, mais ça peut se corriger rapidement.

[oops]Salut cousin :) [/oops]
 

Pièces jointes

  • trier et CLASSER un tableau excel.xlsx
    21.6 KB · Affichages: 3

MOEZ-TUN

XLDnaute Occasionnel
bonjour,

Par power query également :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    #"En Colonne" = List.Transform(Table.ColumnNames(Source), each Table.Column(Source,_)),
    #"Converti en table" = Table.FromList(#"En Colonne", Splitter.SplitByNothing(), {"Order"}, null, ExtraValues.Error),
    #"Order développé" = Table.ExpandListColumn(#"Converti en table", "Order"),
    #"Lignes filtrées" = Table.SelectRows(#"Order développé", each ([Order] <> null and [Order] <> ""))
in
    #"Lignes filtrées"

Je n'ai pas inclus le noms des colonnes car j'ai pensé qu'ils n'étaient là (hors tableau résultat) que pour démonstration, mais ça peut se corriger rapidement.

[oops]Salut cousin :) [/oops]
merci pour votre support
 

MOEZ-TUN

XLDnaute Occasionnel
bonjour,

Par power query également :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    #"En Colonne" = List.Transform(Table.ColumnNames(Source), each Table.Column(Source,_)),
    #"Converti en table" = Table.FromList(#"En Colonne", Splitter.SplitByNothing(), {"Order"}, null, ExtraValues.Error),
    #"Order développé" = Table.ExpandListColumn(#"Converti en table", "Order"),
    #"Lignes filtrées" = Table.SelectRows(#"Order développé", each ([Order] <> null and [Order] <> ""))
in
    #"Lignes filtrées"

Je n'ai pas inclus le noms des colonnes car j'ai pensé qu'ils n'étaient là (hors tableau résultat) que pour démonstration, mais ça peut se corriger rapidement.

[oops]Salut cousin :) [/oops]
Merci beaucoup
thank you
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Une autre version en VBA.

Comme dans le tableau initial fourni, la colonne "Order" faisait partie du tableau structuré, j'ai laissé cette colonne résultat dans le tableau structuré. Il a donc fallu agrandir le tableau le cas échéant si le nombre d'éléments à classer est supérieur au nombre de lignes du tableau initial.
On classe toutes les colonnes du tableau structuré sauf la dernière qui le classement.

Cliquez sur le bouton Hop!

Le code est dans le module de la feuille Feuil1.
 

Pièces jointes

  • MOEZ-TUN- trier-CLASSER un tableau.xlsm
    25.4 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonsoir à tous,

Une autre solution VBA :
VB:
Sub Classer()
Dim c As Range, col As Range, h&
Application.ScreenUpdating = False
With [Tableau2].ListObject
    If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete xlUp
    Set c = .Range(2, 1)
End With
With [Tableau1].ListObject.Range
    .ListObject.Unlist 'tableau non structuré
    For Each col In .Columns
        col.Sort col, xlAscending, Header:=xlYes
        h = Application.CountA(col) - 1
        If h Then
            col.Offset(1).Resize(h).Copy c
            Set c = c.Offset(h)
        End If
    Next
    .Parent.ListObjects.Add(xlSrcRange, .Cells, , xlYes).Name = "Tableau1" 'tableau structuré
End With
End Sub
A+
 

Pièces jointes

  • trier et CLASSER un tableau excel.xlsm
    20.5 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
314 619
Messages
2 111 196
Membres
111 066
dernier inscrit
snobi