Microsoft 365 Trier les colonnes d'un tableau de A à Z en VBA

iliess

XLDnaute Occasionnel
Bonjour
Voici mon tableau TBl1.Toujours commencer par la colonne Clé et après les colonnes leur entête numérique, et ce terminer par les 4 colonnes totales.
1710708491125.png


Je souhaite en VBA classer uniquement les colonnes leur entête est numérique de A à Z.
voici résultat souhaiter

1710708668128.png


Slutations.
 

Pièces jointes

  • trier un tableau par les entete colonne.xlsx
    13.2 KB · Affichages: 8

chris

XLDnaute Barbatruc
Bonjour

On peut convertir en plage et trier de façon simple les colonnes numériques sélectionnées

1710717909277.png


Sinon via PowerQuery
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(Source, {"Cle", "Total EXO", "Total Tax", "Total Tva", "Diff"}, "Attribut", "Valeur"),
    #"Type modifié" = Table.TransformColumnTypes(#"Supprimer le tableau croisé dynamique des autres colonnes",{{"Attribut", Int64.Type}}),
    #"Lignes triées" = Table.Sort(#"Type modifié",{{"Attribut", Order.Ascending}}),
    PStep = Table.Pivot(Table.TransformColumnTypes(#"Lignes triées", {{"Attribut", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(#"Lignes triées", {{"Attribut", type text}}, "fr-FR")[Attribut]), "Attribut", "Valeur"),
    #"Colonnes permutées" = Table.ReorderColumns(PStep,List.Combine({{"Cle"},List.LastN(Table.ColumnNames(PStep), Table.ColumnCount(PStep)-5),List.LastN(Table.ColumnNames(Source),4)}))
in
    #"Colonnes permutées"
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Le plus simple est d'utiliser 2 boucles imbriquées :
VB:
Sub Tri_Colonnes()
Dim cc%, i%, j%
Application.ScreenUpdating = False
With [A1].CurrentRegion
    cc = .Columns.Count
    For i = 1 To cc - 1
        If IsNumeric(.Cells(1, i)) Then
            For j = i + 1 To cc
                If IsNumeric(.Cells(1, j)) Then _
                    If Val(.Cells(1, j)) < Val(.Cells(1, i)) Then .Columns(j).Cut: .Columns(i).Insert xlToRight
            Next j
        End If
    Next i
End With
End Sub
A+
 

Pièces jointes

  • trier un tableau par les entete colonne.xlsm
    19.6 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 208
Messages
2 086 257
Membres
103 167
dernier inscrit
miriame