OVH Cloud OVH Cloud

Trier des cellules a partir de leur couleur

7 réponses
Avatar
bobysmith
Bonjour,

J'ai une s=E9rie ligne avec diff=E9rentes couleurs.
J'aimerai trier ces lignes en fonction de leur couleur,=20
un peu comme la fonction filtre automatique.

Merci

Bobysmith

7 réponses

Avatar
John Fuss
Sans macro c pas possible (à ma connaissance)

Avec macro on peut faire comme ça : admettons que tes données vont de A à F
:

Public Sub MiseEnFormeAvecCouleur()
Dim ra as range
For each ra in Range("A1:A" & Range("A65536").End(xlUp).Row)
Intersect(ra.entireRow, range("G:G")).formula ra.interior.color
Next
End Sub

Et après tu peux faire des tri en fonction du numéro de la couleur en
colonne G.

John


"bobysmith" a écrit dans le message de news:
0f4101c372f1$c422ddd0$
Bonjour,

J'ai une série ligne avec différentes couleurs.
J'aimerai trier ces lignes en fonction de leur couleur,
un peu comme la fonction filtre automatique.

Merci

Bobysmith
Avatar
Denis Michon
Bonjour bobysmith,

Dans un module standard , copie la fonction suivante :
'--------------
Function Coul(Rg As Range)
Coul = Rg.Interior.ColorIndex
End Function
'--------------

Dans ta feuille de calcul, ajoute une colonne, et insère la formule suivante :
=coul(A1) 'A1 étant la cellule que tu désires obtenir sa couleur (index)

Tu recopies sur la totalité de ta plage de données (colonne)
Tu tries sur la colonne ajoutée.
Tu peux effacer cette colonne ou la masquée...

Salutations!




"bobysmith" a écrit dans le message de news:0f4101c372f1$c422ddd0$
Bonjour,

J'ai une série ligne avec différentes couleurs.
J'aimerai trier ces lignes en fonction de leur couleur,
un peu comme la fonction filtre automatique.

Merci

Bobysmith
Avatar
Modeste
;-)))
Salut Michel, Non??? pas cette fois !!! ;-)))
Nonobstant que notre Misange soit toujours absente,
Mon cher Denis il me semble toutefois que vous omittes
l'allusion au volatile !!!

la fonction personnalisée doit comporter :
Application.Volatile

Celle-ci pourra alors etre recalculée chaque fois qu'un
calcul sera effectué dans une cellule quelconque de la
feuille de calcul où elle apparaît.

Function Coul(Rg As Range)
Application.Volatile
Coul = Rg.Interior.ColorIndex
End Function

Egalement le fait de trier selon les indexCouleurs ne me
parait pas trés pratique en ce sens que je n'ai toujours
pas compris la relation entre l'index et un quelconque
rapport avec la teinte, luminosité ou saturation...
a ce sujet Microsoft à semble-t-il jouer aux dés...

il serait judicieux de trier par rapport à une table
ordonnée et personnalisée de couleurs .

Il me semble qu'une proc de ce type se trouve sur le site
http://www.ozgrid.com/VBA/sort.htm

;-)))

@+

-----Message d'origine-----
Bonjour bobysmith,

Dans un module standard , copie la fonction suivante :
'--------------
Function Coul(Rg As Range)
Coul = Rg.Interior.ColorIndex
End Function
'--------------

Dans ta feuille de calcul, ajoute une colonne, et insère
la formule suivante :

=coul(A1) 'A1 étant la cellule que tu désires obtenir sa
couleur (index)


Tu recopies sur la totalité de ta plage de données
(colonne)

Tu tries sur la colonne ajoutée.
Tu peux effacer cette colonne ou la masquée...

Salutations!




"bobysmith" a écrit dans le
message de news:0f4101c372f1$c422ddd0$

Bonjour,

J'ai une série ligne avec différentes couleurs.
J'aimerai trier ces lignes en fonction de leur couleur,
un peu comme la fonction filtre automatique.

Merci

Bobysmith


.



Avatar
Denis Michon
Bonjour Modeste,

Entièrement d'accord avec toi, si la colonne ajoutée pour la formule demeure en place ... mais dans la question
originale, le demandeur n'en fait pas allusion (capacité de trier à répétition une plage de données selon la couleur de
fond des cellules d'une colonne). ;-))

"trier selon les indexCouleurs"

Je crois que l'effet recherché est plutôt de regrouper les données selon leur couleur plutôt que d'obtenir un
kaléidoscope du spectre de la lumière !!! Encore là , le demandeur est demeuré muet sur la question, ;-))


http://www.ozgrid.com/VBA/sort.htm

Voici la réponse que j'obtiens si je vais au site que tu suggères :

"Sorry, we cannot find the page you are trying to access. The Most likely reason is that we have only just switched Web
hosts and our new one is Case Sensitive to Web pages, where-as our old Web host was not "

C'est pas grave !!!

;-))


Salutations!


"Modeste" a écrit dans le message de news:1d7b01c372fb$cc154690$
;-)))
Salut Michel, Non??? pas cette fois !!! ;-)))
Nonobstant que notre Misange soit toujours absente,
Mon cher Denis il me semble toutefois que vous omittes
l'allusion au volatile !!!

la fonction personnalisée doit comporter :
Application.Volatile

Celle-ci pourra alors etre recalculée chaque fois qu'un
calcul sera effectué dans une cellule quelconque de la
feuille de calcul où elle apparaît.

Function Coul(Rg As Range)
Application.Volatile
Coul = Rg.Interior.ColorIndex
End Function

Egalement le fait de trier selon les indexCouleurs ne me
parait pas trés pratique en ce sens que je n'ai toujours
pas compris la relation entre l'index et un quelconque
rapport avec la teinte, luminosité ou saturation...
a ce sujet Microsoft à semble-t-il jouer aux dés...

il serait judicieux de trier par rapport à une table
ordonnée et personnalisée de couleurs .

Il me semble qu'une proc de ce type se trouve sur le site
http://www.ozgrid.com/VBA/sort.htm

;-)))

@+

-----Message d'origine-----
Bonjour bobysmith,

Dans un module standard , copie la fonction suivante :
'--------------
Function Coul(Rg As Range)
Coul = Rg.Interior.ColorIndex
End Function
'--------------

Dans ta feuille de calcul, ajoute une colonne, et insère
la formule suivante :

=coul(A1) 'A1 étant la cellule que tu désires obtenir sa
couleur (index)


Tu recopies sur la totalité de ta plage de données
(colonne)

Tu tries sur la colonne ajoutée.
Tu peux effacer cette colonne ou la masquée...

Salutations!




"bobysmith" a écrit dans le
message de news:0f4101c372f1$c422ddd0$

Bonjour,

J'ai une série ligne avec différentes couleurs.
J'aimerai trier ces lignes en fonction de leur couleur,
un peu comme la fonction filtre automatique.

Merci

Bobysmith


.



Avatar
gee-dee-
;-)))
Bonsoir Denis,
tout a fait d'accord, d'autant que le demandeur parlait de filtre et non de
tri !!!! ;-))))

ce que je voulais faire remarquer c'est que l'ordre numérique normal ou
inverse des colorIndex ne saura jamais répondre à un ordre logique tel que
peut le definir un utilisateur par exemple :
Tres bon = vert Foncé
Bon =vert clair
passable =jaune
insuffisant =orange
mauvais =rouge
nul =violet

Pour ce qui est de l'arc-en-ciel mon classeur gd-color.zip ??? sur
http://www.Excelabo.net permet de generer des palettes personnalisées

concernant le site mentionné l'adresse ci-dessous permet d'accéder à
l'accueil
http://www.ozgrid.com
notament (Free OzGrid Excel Newsletter): l'abonnement est gratuit.
http://www.ozgrid.com/News/Archive.htm

pour le lien mentionné (saisie rapide à la main depuis une copie papier)
en effet il fallait mettre : http://www.ozgrid.com/VBA/Sort.htm ce lien est
correct

tu constatera la subtilité vis-à-vis de :
http://www.ozgrid.com/VBA/sort.htm cherchez l'erreur ;-)))

on pourra egalement y trouver là :
http://www.ozgrid.com/VBA/ReturnCellColor.htm
EXTRAIT :
*******************************
This UDF will return the cells fill color as either an Index number
(default) or it's color name as text


Function CellColor(rCell As Range, Optional ColorName As Boolean)
Dim strColor As String, iIndexNum As Integer

'Written by Dave Hawley of OzGrid.com
Select Case rCell.Interior.ColorIndex
Case 1
strColor = "Black"
iIndexNum = 1
Case 53
strColor = "Brown"
iIndexNum = 53
Case 52
strColor = "Olive Green"
iIndexNum = 52
Case 51
strColor = "Dark Green"
iIndexNum = 51
Case 49
strColor = "Dark Teal"
iIndexNum = 49
Case 11
strColor = "Dark Blue"
iIndexNum = 11
Case 55
strColor = "Indigo"
iIndexNum = 55
Case 56
strColor = "Gray-80%"
iIndexNum = 56
Case 9
strColor = "Dark Red"
iIndexNum = 9
Case 46
strColor = "Orange"
iIndexNum = 46
Case 12
strColor = "Dark Yellow"
iIndexNum = 12
Case 10
strColor = "Green"
iIndexNum = 10
Case 14
strColor = "Teal"
iIndexNum = 14
Case 5
strColor = "Blue"
iIndexNum = 5
Case 47
strColor = "Blue-Gray"
iIndexNum = 47
Case 16
strColor = "Gray-50%"
iIndexNum = 16
Case 3
strColor = "Red"
iIndexNum = 3
Case 45
strColor = "Light Orange"
iIndexNum = 45
Case 43
strColor = "Lime"
iIndexNum = 43
Case 50
strColor = "Sea Green"
iIndexNum = 50
Case 42
strColor = "Aqua"
iIndexNum = 42
Case 41
strColor = "Light Blue"
iIndexNum = 41
Case 13
strColor = "Violet"
iIndexNum = 13
Case 48
strColor = "Gray-40%"
iIndexNum = 48
Case 7
strColor = "Pink"
iIndexNum = 7
Case 44
strColor = "Gold"
iIndexNum = 44
Case 6
strColor = "Yellow"
iIndexNum = 6
Case 4
strColor = "Bright Green"
iIndexNum = 4
Case 8
strColor = "Turqoise"
iIndexNum = 8
Case 33
strColor = "Sky Blue"
iIndexNum = 33
Case 54
strColor = "Plum"
iIndexNum = 54
Case 15
strColor = "Gray-25%"
iIndexNum = 15
Case 38
strColor = "Rose"
iIndexNum = 38
Case 40
strColor = "Tan"
iIndexNum = 40
Case 36
strColor = "Light Yellow"
iIndexNum = 36
Case 35
strColor = "Light Green"
iIndexNum = 35
Case 34
strColor = "Light Turqoise"
iIndexNum = 34
Case 37
strColor = "Pale Blue"
iIndexNum = 37
Case 39
strColor = "Lavendar"
iIndexNum = 39
Case 2
strColor = "White"
iIndexNum = 2
Case Else
strColor = "Custom color or no fill"
End Select

If ColorName = True Or _
strColor = "Custom color or no fill" Then
CellColor = strColor
Else
CellColor = iIndexNum
End If

End Function


To use this UDF push Alt+F11 and go Insert>Module and paste in the code.
Push Alt+Q and save. The Function will appear under "User Defined" in the
Paste Function dialog box (Shift+F3). Use the Function in any cell as shown
below.

ÎllColor(A1,TRUE)
Where cell A1 has a fill color of dark red the result would be "Dark Red"

ÎllColor(A1,FALSE) OR CellColor(A1)
Where cell A1 has a fill color of dark red the result would be 9

******************** FIN de COPIE

@+
Avatar
michdenis
Bonsoir Modeste,

Merci pour ce complément d'informations sur le sujet !

J'y regarderai de plus près ce week-end.


Salutations!





"gee-dee-" a écrit dans le message de news:3f57ac57$0$16514$
;-)))
Bonsoir Denis,
tout a fait d'accord, d'autant que le demandeur parlait de filtre et non de
tri !!!! ;-))))

ce que je voulais faire remarquer c'est que l'ordre numérique normal ou
inverse des colorIndex ne saura jamais répondre à un ordre logique tel que
peut le definir un utilisateur par exemple :
Tres bon = vert Foncé
Bon =vert clair
passable =jaune
insuffisant =orange
mauvais =rouge
nul =violet

Pour ce qui est de l'arc-en-ciel mon classeur gd-color.zip ??? sur
http://www.Excelabo.net permet de generer des palettes personnalisées

concernant le site mentionné l'adresse ci-dessous permet d'accéder à
l'accueil
http://www.ozgrid.com
notament (Free OzGrid Excel Newsletter): l'abonnement est gratuit.
http://www.ozgrid.com/News/Archive.htm

pour le lien mentionné (saisie rapide à la main depuis une copie papier)
en effet il fallait mettre : http://www.ozgrid.com/VBA/Sort.htm ce lien est
correct

tu constatera la subtilité vis-à-vis de :
http://www.ozgrid.com/VBA/sort.htm cherchez l'erreur ;-)))

on pourra egalement y trouver là :
http://www.ozgrid.com/VBA/ReturnCellColor.htm
EXTRAIT :
*******************************
This UDF will return the cells fill color as either an Index number
(default) or it's color name as text


Function CellColor(rCell As Range, Optional ColorName As Boolean)
Dim strColor As String, iIndexNum As Integer

'Written by Dave Hawley of OzGrid.com
Select Case rCell.Interior.ColorIndex
Case 1
strColor = "Black"
iIndexNum = 1
Case 53
strColor = "Brown"
iIndexNum = 53
Case 52
strColor = "Olive Green"
iIndexNum = 52
Case 51
strColor = "Dark Green"
iIndexNum = 51
Case 49
strColor = "Dark Teal"
iIndexNum = 49
Case 11
strColor = "Dark Blue"
iIndexNum = 11
Case 55
strColor = "Indigo"
iIndexNum = 55
Case 56
strColor = "Gray-80%"
iIndexNum = 56
Case 9
strColor = "Dark Red"
iIndexNum = 9
Case 46
strColor = "Orange"
iIndexNum = 46
Case 12
strColor = "Dark Yellow"
iIndexNum = 12
Case 10
strColor = "Green"
iIndexNum = 10
Case 14
strColor = "Teal"
iIndexNum = 14
Case 5
strColor = "Blue"
iIndexNum = 5
Case 47
strColor = "Blue-Gray"
iIndexNum = 47
Case 16
strColor = "Gray-50%"
iIndexNum = 16
Case 3
strColor = "Red"
iIndexNum = 3
Case 45
strColor = "Light Orange"
iIndexNum = 45
Case 43
strColor = "Lime"
iIndexNum = 43
Case 50
strColor = "Sea Green"
iIndexNum = 50
Case 42
strColor = "Aqua"
iIndexNum = 42
Case 41
strColor = "Light Blue"
iIndexNum = 41
Case 13
strColor = "Violet"
iIndexNum = 13
Case 48
strColor = "Gray-40%"
iIndexNum = 48
Case 7
strColor = "Pink"
iIndexNum = 7
Case 44
strColor = "Gold"
iIndexNum = 44
Case 6
strColor = "Yellow"
iIndexNum = 6
Case 4
strColor = "Bright Green"
iIndexNum = 4
Case 8
strColor = "Turqoise"
iIndexNum = 8
Case 33
strColor = "Sky Blue"
iIndexNum = 33
Case 54
strColor = "Plum"
iIndexNum = 54
Case 15
strColor = "Gray-25%"
iIndexNum = 15
Case 38
strColor = "Rose"
iIndexNum = 38
Case 40
strColor = "Tan"
iIndexNum = 40
Case 36
strColor = "Light Yellow"
iIndexNum = 36
Case 35
strColor = "Light Green"
iIndexNum = 35
Case 34
strColor = "Light Turqoise"
iIndexNum = 34
Case 37
strColor = "Pale Blue"
iIndexNum = 37
Case 39
strColor = "Lavendar"
iIndexNum = 39
Case 2
strColor = "White"
iIndexNum = 2
Case Else
strColor = "Custom color or no fill"
End Select

If ColorName = True Or _
strColor = "Custom color or no fill" Then
CellColor = strColor
Else
CellColor = iIndexNum
End If

End Function


To use this UDF push Alt+F11 and go Insert>Module and paste in the code.
Push Alt+Q and save. The Function will appear under "User Defined" in the
Paste Function dialog box (Shift+F3). Use the Function in any cell as shown
below.

ÎllColor(A1,TRUE)
Where cell A1 has a fill color of dark red the result would be "Dark Red"

ÎllColor(A1,FALSE) OR CellColor(A1)
Where cell A1 has a fill color of dark red the result would be 9

******************** FIN de COPIE

@+
Avatar
bobysmith
Bonjour,

Merci a tous.

La solution de Denis Michon légèrement corrigée par
Modeste me satisfait complètement

Thanks

Bobysmith

-----Message d'origine-----
Bonsoir Modeste,

Merci pour ce complément d'informations sur le sujet !

J'y regarderai de plus près ce week-end.


Salutations!





"gee-dee-" a écrit dans le message
de news:3f57ac57$0$16514$

;-)))
Bonsoir Denis,
tout a fait d'accord, d'autant que le demandeur parlait
de filtre et non de

tri !!!! ;-))))

ce que je voulais faire remarquer c'est que l'ordre
numérique normal ou

inverse des colorIndex ne saura jamais répondre à un
ordre logique tel que

peut le definir un utilisateur par exemple :
Tres bon = vert Foncé
Bon =vert clair
passable =jaune
insuffisant =orange
mauvais =rouge
nul =violet

Pour ce qui est de l'arc-en-ciel mon classeur gd-
color.zip ??? sur

http://www.Excelabo.net permet de generer des palettes
personnalisées


concernant le site mentionné l'adresse ci-dessous
permet d'accéder à

l'accueil
http://www.ozgrid.com
notament (Free OzGrid Excel Newsletter): l'abonnement
est gratuit.

http://www.ozgrid.com/News/Archive.htm

pour le lien mentionné (saisie rapide à la main depuis
une copie papier)

en effet il fallait mettre :
http://www.ozgrid.com/VBA/Sort.htm ce lien est

correct

tu constatera la subtilité vis-à-vis de :
http://www.ozgrid.com/VBA/sort.htm cherchez l'erreur ;-
)))


on pourra egalement y trouver là :
http://www.ozgrid.com/VBA/ReturnCellColor.htm
EXTRAIT :
*******************************
This UDF will return the cells fill color as either an
Index number

(default) or it's color name as text


Function CellColor(rCell As Range, Optional ColorName As
Boolean)

Dim strColor As String, iIndexNum As Integer

'Written by Dave Hawley of OzGrid.com
Select Case rCell.Interior.ColorIndex
Case 1
strColor = "Black"
iIndexNum = 1
Case 53
strColor = "Brown"
iIndexNum = 53
Case 52
strColor = "Olive Green"
iIndexNum = 52
Case 51
strColor = "Dark Green"
iIndexNum = 51
Case 49
strColor = "Dark Teal"
iIndexNum = 49
Case 11
strColor = "Dark Blue"
iIndexNum = 11
Case 55
strColor = "Indigo"
iIndexNum = 55
Case 56
strColor = "Gray-80%"
iIndexNum = 56
Case 9
strColor = "Dark Red"
iIndexNum = 9
Case 46
strColor = "Orange"
iIndexNum = 46
Case 12
strColor = "Dark Yellow"
iIndexNum = 12
Case 10
strColor = "Green"
iIndexNum = 10
Case 14
strColor = "Teal"
iIndexNum = 14
Case 5
strColor = "Blue"
iIndexNum = 5
Case 47
strColor = "Blue-Gray"
iIndexNum = 47
Case 16
strColor = "Gray-50%"
iIndexNum = 16
Case 3
strColor = "Red"
iIndexNum = 3
Case 45
strColor = "Light Orange"
iIndexNum = 45
Case 43
strColor = "Lime"
iIndexNum = 43
Case 50
strColor = "Sea Green"
iIndexNum = 50
Case 42
strColor = "Aqua"
iIndexNum = 42
Case 41
strColor = "Light Blue"
iIndexNum = 41
Case 13
strColor = "Violet"
iIndexNum = 13
Case 48
strColor = "Gray-40%"
iIndexNum = 48
Case 7
strColor = "Pink"
iIndexNum = 7
Case 44
strColor = "Gold"
iIndexNum = 44
Case 6
strColor = "Yellow"
iIndexNum = 6
Case 4
strColor = "Bright Green"
iIndexNum = 4
Case 8
strColor = "Turqoise"
iIndexNum = 8
Case 33
strColor = "Sky Blue"
iIndexNum = 33
Case 54
strColor = "Plum"
iIndexNum = 54
Case 15
strColor = "Gray-25%"
iIndexNum = 15
Case 38
strColor = "Rose"
iIndexNum = 38
Case 40
strColor = "Tan"
iIndexNum = 40
Case 36
strColor = "Light Yellow"
iIndexNum = 36
Case 35
strColor = "Light Green"
iIndexNum = 35
Case 34
strColor = "Light Turqoise"
iIndexNum = 34
Case 37
strColor = "Pale Blue"
iIndexNum = 37
Case 39
strColor = "Lavendar"
iIndexNum = 39
Case 2
strColor = "White"
iIndexNum = 2
Case Else
strColor = "Custom color or no fill"
End Select

If ColorName = True Or _
strColor = "Custom color or no fill" Then
CellColor = strColor
Else
CellColor = iIndexNum
End If

End Function


To use this UDF push Alt+F11 and go Insert>Module and
paste in the code.

Push Alt+Q and save. The Function will appear
under "User Defined" in the

Paste Function dialog box (Shift+F3). Use the Function
in any cell as shown

below.

ÎllColor(A1,TRUE)
Where cell A1 has a fill color of dark red the result
would be "Dark Red"


ÎllColor(A1,FALSE) OR CellColor(A1)
Where cell A1 has a fill color of dark red the result
would be 9


******************** FIN de COPIE

@+



.