Sub tri(a, gauc, droi)          ' Quick sort croissant  de J. Boisgontier adapté
     ref = a(2, (gauc + droi) \ 2)
     g = gauc: d = droi
     Do
          Do While a(2, g) < ref: g = g + 1: Loop
          Do While ref < a(2, d): d = d - 1: Loop
          If g <= d Then
               Temp = a(1, g): a(1, g) = a(1, d): a(1, d) = Temp
               Temp = a(2, g): a(2, g) = a(2, d): a(2, d) = Temp
          g = g + 1: d = d - 1
          End If
     Loop While g <= d
     If g < droi Then Call tri(a, g, droi)
     If gauc < d Then Call tri(a, gauc, d)
End Sub
Sub OrdonneSh()
     Dim Tb()
     nb = 0
     For Each Wsh In ThisWorkbook.Worksheets
          If UCase(Wsh.Name) Like "CLASS*" Then
               nb = nb + 1
               ReDim Preserve Tb(1 To 2, 1 To nb)
               part = Split(Wsh.Name, " ")
               Tb(1, nb) = Wsh.Name
               If UBound(part) = 1 Then
                    Tb(2, nb) = CInt(part(1))
               End If
          End If
     Next
     Call tri(Tb, 1, UBound(Tb, 2))
     ThisWorkbook.Worksheets(Tb(1, 1)).Move Before:=ThisWorkbook.Worksheets(1)
     For i = 2 To UBound(Tb, 2)
          ThisWorkbook.Worksheets(Tb(1, i)).Move After:=ThisWorkbook.Worksheets(Tb(1, i - 1))
     Next
     Application.Goto ThisWorkbook.Worksheets(Tb(1, 1)).[A1]
End Sub