Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Tri avec mise en évidence en couleur des groupes d'items triés

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai une BD que je peux trier via un ComboBox :
- Tri par ordre alphabétique ascendant ou descendant
- Tri par tailles ascendantes ou descendantes des fichiers
- Tri en fonction des extensions des fichiers

Jusque là, pas de problème.
Je voudrais rajouter un plus. Quand on tri par ordre alphabétique ascendant ou descendant, pour mieux "départager" les items, faire en sorte que tous les fichiers dont le nom commence par A soient, par exemple, d'une couleur grisée, les fichiers dont le nom commence par B restents blancs, les fichiers dont le nom commence par C soient grisés, et ainsi de suite jusqu'à Z.
Idem quand on tri en fonction des extensions : fichiers ".avi" grisés, fichiers ".exe" blancs...
Pour le tri par tailles, tout reste blanc.

Je joins un exemple de BD.
 

Pièces jointes

  • Tri.xlsm
    114.8 KB · Affichages: 8
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Magic_doctor,
Un essai en PJ avec :
Code:
Sub Couleurs()
    Dim DL%, Ligne%, Gris, Couleur
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    Gris = RGB(200, 200, 200)                   ' Gris sinon xlnone
    Range("A2:F" & DL).Interior.Color = xlNone  ' Effacer toute couleur
    Couleur = Gris
    For Ligne = 4 To DL
        If Left(Cells(Ligne, "B"), 1) <> Left(Cells(Ligne - 1, "B"), 1) Then
            If Couleur = Gris Then Couleur = xlNone Else Couleur = Gris ' Changement de couleur
        End If
        Range(Cells(Ligne, "A"), Cells(Ligne, "F")).Interior.Color = Couleur
    Next Ligne
End Sub
et évidemment l'intégration de cette macro dans vos tris.
et éliminer les couleurs si on n'est pas en tri alpha.
 

Pièces jointes

  • Tri.xlsm
    117.7 KB · Affichages: 4
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups, j'ai oublié le tri sur .ext :
VB:
Sub Couleurs()
    Dim DL%, Ligne%, Gris, Couleur1, Couleur2, Couleur
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    Couleur1 = RGB(200, 200, 200)               ' Transparnt= xlnone
    Couleur2 = RGB(255, 255, 200)
    Range("A2:F" & DL).Interior.Color = xlNone  ' Effacer toute couleur
    Couleur = Couleur1                          ' Init arbitrare à Couleur1
    For Ligne = 4 To DL
        If ComboBoxTri = ".ext" Then
            If Left(Cells(Ligne, "C"), 4) <> Left(Cells(Ligne - 1, "C"), 4) Then
                If Couleur = Couleur1 Then Couleur = Couleur2 Else Couleur = Couleur1 ' Changement de couleur
            End If
        Else
            If Left(Cells(Ligne, "B"), 1) <> Left(Cells(Ligne - 1, "B"), 1) Then
                If Couleur = Couleur1 Then Couleur = Couleur2 Else Couleur = Couleur1 ' Changement de couleur
            End If
        End If
            Range(Cells(Ligne, "A"), Cells(Ligne, "F")).Interior.Color = Couleur
    Next Ligne
    Range("A2:F" & DL).Borders.LineStyle = xlThin ' entourage cellule ou xlnone pour effacer
End Sub
On peut régler les deux couleurs avec Couleur1 et Couleur2.

J'ai remarqué que la colonne A n'est pas triée avec le reste, donc les N° ne sont pas attribués à un titre mais arbitrairement à une ligne ?
 

Pièces jointes

  • Tri (1).xlsm
    118.1 KB · Affichages: 3

Magic_Doctor

XLDnaute Barbatruc
Bonsoir sylvanu,

Super, ça marche et c'est bô !
Il ne reste plus qu'à adapter ta solution à mon application finale.
La colonne A (dont on pourrait à la rigueur se passer) n'est en effet pas triée, car elle ne sert qu'à numéroter les items de la BD. L'ordre n'a alors que peu d'importance et le modifier, lors d'un tri, ne ferait qu'égarer inutilement le pélerin.

Un grand merci.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Outre la macro à rajouter à la fin, il suffit en fin de sub de TriExt et TriAlphabetique de rajouter Couleurs.
En entrée de TriTaille il faut rajouter :
VB:
Range(Cells(2, "A"), Cells(Range("B65500").End(xlUp).Row, "F")).Interior.Color = xlNone
pour effacer les couleurs.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…