VBA - Feuille en ordre croissant

gorPweN -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aimerai savoir comment mettre les feuilles d'un classeur en ordre decroissant
sur VBA.
Ex: de nom de feuilles
Log_20100715-051100-002-GMT-0400
Log_20100714-092000-004-GMT-0400
Log_20100701-172900-005-GMT-0400
Log_20100702-060700-003-GMT-0400
Log_20100713-044400-003-GMT-0400
C'est les dates que j'ai mis en caractère gras que j'aimerai mettre en ordre decroissant.

Résultats souhaiter:
Log_20100715-051100-002-GMT-0400
Log_20100714-092000-004-GMT-0400
Log_20100713-044400-003-GMT-0400
Log_20100702-060700-003-GMT-0400
Log_20100701-172900-005-GMT-0400

merci,

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    essaies cette macro

    Option Explicit 
    Sub ranger() 
    Dim tablo() 
    Dim nbre As Byte, cptr As Byte, i As Byte, j As Byte, k As Byte 
    Dim tmp0 As String 
    ' nombre de feuilles 
    nbre = ThisWorkbook.Sheets.Count 
    
    'construit un tableau t "nbre" d'éléments 
    ReDim tablo(nbre - 1) 
    
    'remplit le tableau avec le nom des onglets  
    Do Until cptr = nbre 
        tablo(cptr) = Sheets(cptr + 1).Name 
        cptr = cptr + 1 
    Loop 
    
    'range le tableau dans l'ordre décroissant 
    For i = 0 To nbre 
            j = i 
            For k = j + 1 To nbre - 1 
                If tablo(k) > tablo(j) Then j = k 
            Next k 
        If i <> j Then 
            tmp0 = tablo(j) 
            tablo(j) = tablo(i) 
            tablo(i) = tmp0 
        End If 
      Next i 
       
      'fige défilement de l'écran 
      Application.ScreenUpdating = False 
      'range les feuilles dans l'ordre décroissant 
     cptr = 0 
     For cptr = 0 To UBound(tablo) 
        Sheets(tablo(cptr)).Move before:=Sheets(nbre) 
    Next 
       
    End Sub 
    


    edit: modifié dernière ligne
    :-x
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ambiguité entre ton titre "croissant" et ton texte "décroissant"

      si croissant

      For k = j + 1 To nbre - 1 
                  If tablo(k) <= tablo(j) Then j = k 
              Next k


      et
      Sheets(tablo(cptr)).Move before:=Sheets(1)
      0