Pat se demande s’il existe un moyen rapide de classer par ordre alphabétique les feuilles de calcul de son classeur. Il n’y a pas de méthode intégrée pour ce faire, mais il est possible d’utiliser une macro pour effectuer le tri à votre place. Je vais présenter deux approches dans cette astuce. Le premier fournit un moyen simple de faire le tri.

Sub SortSheets1()

Dim I As Integer     Dim J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

Cette macro trie les onglets de la feuille de calcul par nom dans l’ordre croissant. Si vous souhaitez les trier par ordre décroissant, tout ce que vous avez à faire est de changer le> dans la ligne centrale en <.

La macro fonctionne très bien si vous avez un nombre relativement faible de feuilles de calcul dans votre classeur. Si, lorsque vous exécutez la macro, vous constatez que son exécution prend beaucoup de temps, vous souhaiterez peut-être utiliser un algorithme de tri plus efficace dans la macro. Par exemple, ce qui suit est une version qui lit les noms de toutes les feuilles de calcul dans un tableau, trie le tableau à l’aide de l’algorithme BubbleSort, puis effectue l’organisation réelle:

Sub SortSheets2()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer     Dim Upper As Integer     Dim I As Integer     Dim J As Integer     Dim K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Quiconque a programmé pendant un certain temps sait que BubbleSort est une bonne routine de tri à usage général, mais il en existe des plus rapides.

Par exemple, si vous avez un certain nombre de feuilles de calcul, et qu’elles commencent très désorganisées, vous constaterez peut-être que l’algorithme QuickSort est plus avantageux. Tout ce que vous devez faire pour modifier ce qui précède pour utiliser QuickSort est d’ajouter l’algorithme QuickSort en tant que sous-programme (vous pouvez trouver l’algorithme dans n’importe quel bon livre de programmation Visual Basic), puis appeler la procédure à partir de la macro SortSheets principale. (Cela signifie changer la ligne où BubbleSort est maintenant appelé.)

Il existe une autre différence entre cette deuxième macro et la première. La première macro ne fait pas attention à la casse du texte utilisé pour nommer vos feuilles de calcul. Ainsi, MyWorksheet serait affiché de la même manière que MYWORKsheet. La deuxième macro fait attention à la casse du texte et trie en conséquence. Bien sûr, ce n’est pas un problème particulièrement important, car Excel ne fait pas non plus attention à la casse dans les noms de feuille de calcul.

Juste une note rapide: la routine BubbleSort illustrée ci-dessus est de nature générale. Cela signifie que cela fonctionnera pour trier n’importe quel tableau, pas seulement pour trier les noms des onglets de feuille de calcul.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13440) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.

Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

lien: / excel-Alphabetizing_Worksheet_Tabs [Alphabétisation des onglets de la feuille de travail].