Optimisation macro tri de fes feuilles

Bonjour à Tous,

J'ai une macro qui me permet de trier les feuilles d'un classeur à partir de la 17e. Elle fonctionne très bien, cependant quand le nombre de feuille est important (une vingtaine) cela devient très long ... Et je n'arrive pas à l'optimiser.

Voici le code

Dim I As Integer, J As Integer
For I = 17 To Sheets.Count
For J = 17 To I - 1 
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then 
Sheets(I).Move Before:=Sheets(J)
Exit For
End If
Next J
Next I

Avez-vous une idée pour raccourcir le délai de tri ?

Merci

Bonjour ABCIVIN,

Essaye de mettre "Application.ScreenUpdating = False " en début de procédure .

Bonjour,

Comme ça ira bien :

Sub SortSheetsTabName()
    Dim iSheets%, i%, j%
    Application.ScreenUpdating = False
    iSheets = Sheets.Count
    For i = 17 To iSheets - 1
        For j = i + 1 To iSheets
            If Sheets(j).Name < Sheets(i).Name Then
                Sheets(j).Move before:=Sheets(i)
            End If
        Next j
    Next i
End Sub

A+

Bonjour,

une proposition

edit (j'ai zappé le fait qu'il fallait trier à partir de la 17 feuille.)

Sub aargh()
    Set ls = CreateObject("System.Collections.SortedList")
    For i = 1 To Sheets.Count
        ls.Add Sheets(i).Name, Sheets(i).Name
    Next i
    For i = 0 To ls.count
        Sheets(ls.getbyindex(i)).Move after:=Sheets(Sheets.Count)
    Next i
End Sub

bonjour,

version pour trier à partir de la 17eme feuille

Sub aargh()
    Set ls = CreateObject("System.Collections.SortedList")
    For i = 17 To Sheets.Count
        ls.Add Sheets(i).Name, Sheets(i).Name
    Next i
    For i = 0 To ls.Count - 1
        Sheets(ls.getbyindex(i)).Move after:=Sheets(Sheets.Count)
    Next i
End Sub

Merci pour vos retours, cela fonctionne

Rechercher des sujets similaires à "optimisation macro tri fes feuilles"