Si vous travaillez sur un projet qui utilise beaucoup de feuilles de calcul dans un classeur, vous souhaiterez peut-être les trier par nom de feuille de calcul. La courte macro suivante fera très bien l’affaire:

Sub SortSheets()

Dim I As Integer, 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 fonctionne 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 SortSheets()

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, Upper As Integer     Dim I As Integer, J As Integer, 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, ma feuille de travail serait affichée de la même manière que ma feuille de travail. 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.

_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 (1959) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

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