trier plusieur collone par ordre alphabetique

creolia

XLDnaute Impliqué
Bonjour à tous

je viens vous demandez un petit coup de main pour trier plusieurs colonne par ordre alphabetique.

je m'explique j'ai des colonne avec des nom sur un tableau B3:CP50 je souhaiterais grace à une macro proceder au trie de chaque colonne par ordre alphabetique j'ai essayer en enregistrant une macro mais sa me trie que la premiere colonne

Sub Triealpha()
With Sheets("Dispo").Select
Range("B3").Select

Range("B3:CP117").Select
ActiveWorkbook.Worksheets("Dispo").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dispo").Sort.SortFields.Add Key:=Range("B3"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dispo").Sort
.SetRange Range("B3:CP50")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Dispo").Select
Range("B3").Select
End With
End Sub

pouvez vous m'aider svp merci
 

chris

XLDnaute Barbatruc
Bonjour

Soit tu tries en conservant le lien logique entre tes colonnes et il faut autant de Add Key que de colonnes.

Soit tu tries indépendamment chaque colonne, ce qui casse le lien éventuel entre les colonnes t il faut autant de tris que de colonnes appliqué chacun à une seule colonne.

(Edit ortho)
 
Dernière édition:

creolia

XLDnaute Impliqué
Re bonjour donc en fait j'ai réussis à bidouiller une macro le seul soucis c'est il est un peu long peut ton réduire le temps de calcule svp

Sub tri1()

With Sheets("Feuil1").Select
For i = 1 To 93

ActiveSheet.Cells(1, i).Resize(ActiveSheet.UsedRange.Rows.Count, 1).Sort _
Key1:=ActiveSheet.Cells(1, i), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Next i
End With
End Sub
 

Fichiers joints

FYL

XLDnaute Nouveau
Bonjour,
J'utilise dans un de mes programme quelque chose pour trier les colonnes, ça pourra peut-être vous aider :)
 

Fichiers joints

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Tu as une multitude de formes sur la feuille 1...

Peux-tu essayer avec :

VB:
Sub Tri()
Application.ScreenUpdating = 0: Application.Calculation = xlCalculationManual: Application.EnableEvents = 0
    With Feuil1
        For i = 1 To 93
            .Cells(1, i).Resize(ActiveSheet.UsedRange.Rows.Count, 1).Sort _
                    Key1:=.Cells(1, i), Order1:=xlAscending, Header:=xlGuess
        Next i
    End With
    Application.ScreenUpdating = 1: Application.Calculation = xlCalculationAutomatic: Application.EnableEvents = 1
End Sub
A+ à tous
 
Dernière édition:

FYL

XLDnaute Nouveau
C'est peut-être le resize qui prend du temps car souvent la mise en forme des cellules est assez lente...
Pourquoi pas faire le tri et ensuite le dimensionnement des colonnes en une seule fois
 

Discussions similaires


Haut Bas