VBA - Feuille en ordre croissant

Fermé
gorPweN - 19 juil. 2010 à 17:52
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 juil. 2010 à 18:25
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,

A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 19/07/2010 à 18:32
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 19/07/2010 à 18:33
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