Tri par colonne

Sassy

XLDnaute Nouveau
Bonjour le forum,

Je bute depuis quelques heures sur un problème ..

j'ai un tableau qui contient environ 200 colonnes .. j'aimerais par macro trier chaque colonne (de la ligne 3 à la ligne 600) par ordre alphabétique.

Ce tableau étant actualisé chaque semaine (par liaison avec d'autres tableaux) j'avoue ne pas avoir le courage de trier à chaque le tout ...

Quelqu'un à t'il une solution ?

Merci d'avance

;)
 

Bebere

XLDnaute Barbatruc
bonjour

j'espère que ce qui suit t'aidera

Sub TrierColonne()

Dim C As Integer, Ligne As Long, Colonne As Integer

'adapter ('Feuil1')
Sheets('Feuil1').Select
'dernière colonne non vide
Colonne = Rows(3).Find('*', , , , , xlPrevious).Column
For C = 1 To Colonne
'dernière ligne non vide
Ligne = Columns(1).Find('*', , , , , xlPrevious).Row

Range(Cells(3, C), Cells(Ligne, C)).Select
Selection.Sort Key1:=Cells(3, C), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next C

Cells(1, 1).Select

End Sub


au revoir


:huh: :huh:
 

CBernardT

XLDnaute Barbatruc
Bonsoir Sassy et Bebere,

Une autre approche du tri :

Une macro à placer dans le module de la feuille à trier.
Si les données changent, elle exécutera un tri automatique de la colonne 3 à la dernière existante.

A adapter au niveau du nom de la feuille. Remplacer 'Feuil1' par xxx

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte, Lig As Integer, Col As Byte
With Sheets('Feuil1')
Lig = .Range('A3').SpecialCells(xlCellTypeLastCell).Row
Col = .Range('A3').SpecialCells(xlCellTypeLastCell).Column
For i = 3 To Col
Range(.Cells(2, i), .Cells(Lig, i)).Sort Key1:=.Cells(2, i), Order1:=xlAscending
Next i
End With
End Sub

Cordialement

Bernard
 

Discussions similaires