Page 1 sur 1

Trier une colonne dans Excel

MessagePublié: 23 Sep 2011 à 16:23
par Michael DELIQUE
Code : Tout sélectionner
Public Sub ExcelSort(wnbTriCroissant As Boolean,wnbMatchCase As Boolean,wnbSortRow As Boolean, wobjXLSWorkSheet As Variant, wnbFistRaw As Long,wnbLastRaw As Long, wnbColumn As Long)

   Dim objXLSRange As Variant
   Dim nbSens As Integer
   Dim nbOrientation As Integer
   Const nbWithTitle = 0 
   REM nbWithTitle = 0 la premiere ligne n'est pas un titre et est trié, nbWithTitle = 1 la premiereligne est un titre et n'est pas trié

   On Error GoTo CatchError

   If TestVariant(wobjXLSWorkSheet) = False Then
      Error 9999,"wobjXLSWorkSheet is empty"
      Exit Sub
   End If

   If wnbFistRaw < 0 Then
      Error 9999,"wnbFistRaw < 0"
      Exit Sub
   End If

   If wnbLastRaw < 0 Then
      Error 9999,"wnbLastRaw < 0"
      Exit Sub
   End If

   If wnbFistRaw = wnbLastRaw Then   
      Exit Sub
   End If

   If wnbColumn < 0 Then
      Error 9999,"wnbColumn < 0"
      Exit Sub
   End If
   
   If wnbTriCroissant = True Then
      REM xlAscending = 1    "CROISSANT","C","A","ASCENDANT","ASCENDING","I","INCREASING","",">"
      
      nbSens = 1      
   else
      REM xlDescending = 2 "DECROISSANT","D","DESCENDANT","DESCENDING","DECREASING","<"
      nbSens = 2
      
   End If

   If wnbSortRow = True Then
      REM trie une ligne, xlLeftToRight = 2
      nbOrientation = 2
   Else
      REM trie une colonne, xlTopToBottom = 1   
      nbOrientation = 1
   End If

   Set objXLSRange = wobjXLSWorkSheet.Range(wobjXLSWorkSheet.Cells(wnbFistRaw,wnbColumn), wobjXLSWorkSheet.Cells(wnbLastRaw,wnbColumn))
   objXLSRange.Sort wobjXLSWorkSheet.Cells(wnbFistRaw, wnbColumn), nbSens, , , , , , nbWithTitle, 1, wnbMatchCase, nbOrientation,
   Set objXLSRange = Nothing

   Exit Sub
CatchError:
   MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Sub
End Sub