Excel vous permet de trier les données de vos feuilles de calcul selon n’importe quel nombre d’attributs. Cependant, l’un des éléments sur lesquels vous ne pouvez pas trier intrinsèquement est la couleur des cellules, du moins pas sans la mise à jour vers Excel 2007 ou une version ultérieure. Pour certaines applications, cela peut être une fonctionnalité très pratique.

La macro suivante, SortByColor, triera un tableau en fonction de la couleur avec laquelle une cellule est formatée.

Sub SortByColor()

On Error GoTo SortByColor_Err

Dim sRangeAddress As String     Dim sStartCell As String     Dim sEndCell As String     Dim rngSort As Range     Dim rng As Range

Application.ScreenUpdating = False

sStartCell = InputBox("Enter the cell address of the " & _       "top cell in the range to be sorted by color" & _       Chr(13) & "i.e.  'A1'", "Enter Cell Address")



If sStartCell > "" Then         sEndCell = Range(sStartCell).End(xlDown).Address         Range(sStartCell).EntireColumn.Insert         Set rngSort = Range(sStartCell, sEndCell)

For Each rng In rngSort             rng.Value = rng.Offset(0, 1).Interior.ColorIndex         Next         Range(sStartCell).Sort Key1:=Range(sStartCell), _           Order1:=xlAscending, Header:=xlNo, _           Orientation:=xlTopToBottom         Range(sStartCell).EntireColumn.Delete     End If

SortByColor_Exit:

Application.ScreenUpdating = True     Set rngSort = Nothing     Exit Sub

SortByColor_Err:

MsgBox Err.Number & ": " & Err.Description, _       vbOKOnly, "SortByColor"

Resume SortByColor_Exit End Sub

La macro fonctionne en vous demandant d’abord la cellule de début de la plage que vous souhaitez trier. Cela devrait être la cellule la plus haute de la plage. La macro insère ensuite une colonne (juste temporairement) dans laquelle les valeurs de couleur peuvent être stockées. Il parcourt ensuite chaque cellule de la plage définie par la cellule de départ que vous avez spécifiée.

SortByColor suppose que votre table de données n’a pas de ligne d’en-tête. Si tel est le cas, vous devez modifier la commande de tri réelle. Remplacez simplement Header: = xlNo par Header: = xlYes.

Vous devez noter que la macro SortByColor trie uniquement les cellules en fonction de la couleur explicite appliquée à la cellule, elle ne trie pas si la couleur de la cellule est le résultat d’une mise en forme conditionnelle.

_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 (3122) 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:

link: / excelribbon-Sorting_by_Colors [Tri par couleurs].