OVH Cloud OVH Cloud

tri par couleurs

3 réponses
Avatar
irina
Bonjour,

J'ai un taleau fait sous excel 2000 avec des lignes de
plusieurs couleurs.
Est-ce possible de faire un tri par couleur?
Si oui comment!!!

Merci d'avance
Irina

3 réponses

Avatar
garnote
Bonjour Irina,

Tu pourrais peut-être récupérer les indices correspondant
aux couleurs de fond de tes lignes et faire un tri par rapport
à ces indices :
1. Tu sélectionnes la première colonne de ton tableau en t'assurant
qu'il y ait une colonne vide juste à gauche et tu appelles cette macro :

Sub Indices()
For Each c In Selection
c.Offset(0, -1) = c.Interior.ColorIndex
Next
End Sub

2. Tu fais alors un tri par rapport aux indices obtenus.

Mais est-ce bien ça que tu désires ?

Serge

"irina" a écrit dans le message de news:
59ff01c35765$269813c0$
Bonjour,

J'ai un taleau fait sous excel 2000 avec des lignes de
plusieurs couleurs.
Est-ce possible de faire un tri par couleur?
Si oui comment!!!

Merci d'avance
Irina


Avatar
Misange
Bonjour,
pas si simple en fait !
mais regarde ici :
http://www.excelabo.net/xl/filtris.htm#tricouleur
ca devrait répondre à ta question

--
Misange migrateuse http://www.excelabo.net
==Attention, Disciplus a migré et devient excelabo !===========



"irina" a écrit dans le message de news:
59ff01c35765$269813c0$
Bonjour,

J'ai un taleau fait sous excel 2000 avec des lignes de
plusieurs couleurs.
Est-ce possible de faire un tri par couleur?
Si oui comment!!!

Merci d'avance
Irina


Avatar
Hervé
Salut Irina,
J'ai bricolé cette proc qui tri les couleurs de façon croissante et ensuite
met les lignes dans l'ordre puis à la fin, supprime la plage originale. Je
sais, le code parrait être une usine à gaz mais sur les tests que je viens
de faire ça marche. Adapte :

Sub TriCouleur()
'tri les lignes par les index croissants
'de couleur de remplissage des cellules
'de la colonne A
Dim Plage As Range
Dim Tbl() As Integer
Dim I As Integer, J As Integer
Dim TempoId As Integer
Dim TempoLgn As Integer
Dim Ligne As Integer

Set Plage = Range([A1], [A65536].End(xlUp))

ReDim Tbl(1 To Plage.Count, 1 To 2)

'recup des index et N° de lignes
For I = 1 To Plage.Count
Tbl(I, 1) = Plage(I).Interior.ColorIndex
Tbl(I, 2) = Plage(I).Row
Next I
'tri dans le tableau
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I, 1) > Tbl(J, 1) Then
TempoId = Tbl(J, 1)
TempoLgn = Tbl(J, 2)
Tbl(J, 1) = Tbl(I, 1)
Tbl(J, 2) = Tbl(I, 2)
Tbl(I, 1) = TempoId
Tbl(I, 2) = TempoLgn
End If
Next J
Next I
'colle momentanément les lignes
'sous la plage
J = Plage.Rows.Count
For I = 1 To UBound(Tbl)
Ligne = Tbl(I, 2)
J = J + 1
Fe.Rows(Ligne & ":" & Ligne).Copy Fe.Range("A" & J)
Next
'supprime la plage
Plage.EntireRow.Delete

Erase Tbl
Set Plage = Nothing
End Sub

Hervé.

"irina" a écrit dans le message news:
59ff01c35765$269813c0$
Bonjour,

J'ai un taleau fait sous excel 2000 avec des lignes de
plusieurs couleurs.
Est-ce possible de faire un tri par couleur?
Si oui comment!!!

Merci d'avance
Irina