OVH Cloud OVH Cloud

Tris avec application de couleur

2 réponses
Avatar
pg.eco1
Bonjour à tous et meilleurs voeux pour cette nouvelle année.

Voilà mon problème et j'espère qu'une solution existe, je pense que oui
mais je n'ai pas trouver à ce jour

J'ai à faire un tri sur 6 cellules à l'horizontale comportant des prix et je
voudrais que la cellule se colore en fonction du classement (exemple le
moins cher en vert avec progression de la couleur jusqu'au Rouge pour le
plus cher.
Ce tri se repétant sur la totalité de la feuille environ 2500 lignes

Exemple, le tri se faisant sur les colonnes B, D, F, H, J et K

A B C D E F
G H I J K L
1 86,70 ? 1 120,90 ? 1 28,50 ? 1 30,16 ? 1 45,00 ? 1 23,00 ?
1 86,70 ? 1 141,30 ? 1 35,60 ? 1 33,14 ? 1 60,00 ? 1 30,00 ?
1 110,80 ? 1 110,70 ? 1 46,50 ? 1 38,12 ? 1 60,00 ? 1 27,00 ?
1 120,50 ? 1 518,40 ? 1 32,50 ? 1 55,52 ? 1 130,00 ? 1 10,00 ?
1 127,00 ? 1 594,00 ? 1 41,50 ? 1 60,17 ? 1 150,00 ? 1 15,00 ?



En espérant la solution je vous en remercie à l'avance

Salutations à tous

Patrick

2 réponses

Avatar
anomymousA
bonjour,

Dans le code suivant, il est nécessaire de faire une référence à une cellule
bidon (Z1) pour initialiser plage1.L'essentiel est qu'il n' y ait pas de
valeur numérique dans Z1.

On suppose que tes données vont de la ligne 2 à derniereligne et que tes
colonnes vont de 1 à 6
Le code couleurs utilisés pour la séquence des couleurs est celui d'Excel,
tu peux changer la nature des couleurs plutot que respecter la séquence de
couleurs de 2 à 8 en déclarant juste avant c.Interior.ColorIndex = I + 1 la
valeur de la couleur que tu désires pour aller de vert à rouge puisque la
boucle de compraraison des valeurs est faite du plus petit vers le plus grand
(à toi de voir)

Attention ensuite que si 2 valeurs sont strictement égales, leurs codes
couleurs seront quand même différents.

Sub Macro1()

Dim plage1 As Range, plage as range

for J=2 to derniereligne

Set plage = Range(Cells(J, 1), Cells(J, 6))
Set plage1 = Range("Z1")

For I = 1 To 6

For Each c In plage
If c.Interior.ColorIndex = xlNone Then
Set plage1 = Union(c, plage1)
End If
Next

toto = Application.WorksheetFunction.Min(plage1)

For Each c In plage1
If c.Value = toto Then
c.Interior.ColorIndex = I + 1
Exit For
End If
Next

Set plage1 = Range("Z1")

Next

next

End Sub

A+



Bonjour à tous et meilleurs voeux pour cette nouvelle année.

Voilà mon problème et j'espère qu'une solution existe, je pense que oui
mais je n'ai pas trouver à ce jour

J'ai à faire un tri sur 6 cellules à l'horizontale comportant des prix et je
voudrais que la cellule se colore en fonction du classement (exemple le
moins cher en vert avec progression de la couleur jusqu'au Rouge pour le
plus cher.
Ce tri se repétant sur la totalité de la feuille environ 2500 lignes

Exemple, le tri se faisant sur les colonnes B, D, F, H, J et K

A B C D E F
G H I J K L
1 86,70 ? 1 120,90 ? 1 28,50 ? 1 30,16 ? 1 45,00 ? 1 23,00 ?
1 86,70 ? 1 141,30 ? 1 35,60 ? 1 33,14 ? 1 60,00 ? 1 30,00 ?
1 110,80 ? 1 110,70 ? 1 46,50 ? 1 38,12 ? 1 60,00 ? 1 27,00 ?
1 120,50 ? 1 518,40 ? 1 32,50 ? 1 55,52 ? 1 130,00 ? 1 10,00 ?
1 127,00 ? 1 594,00 ? 1 41,50 ? 1 60,17 ? 1 150,00 ? 1 15,00 ?



En espérant la solution je vous en remercie à l'avance

Salutations à tous

Patrick





Avatar
anomymousA
re,

la variante qui permet de se passer de la référence bidon de plage1 à la
cellule Z1

Sub Macro1()

Dim plage1 As Range,plage as range

for J=2 to derniereligne

Set plage = Range(Cells(J, 1), Cells(J, 6))

For I = 1 To 6

For Each c In plage
If c.Interior.ColorIndex = xlNone Then
On Error Resume Next
Set plage1 = Union(c, plage1)
If Err.Number <> 0 Then
Err.Clear
Set plage1 = Union(c, c)
End If
End If
Next

toto = Application.WorksheetFunction.Min(plage1)

For Each c In plage1
If c.Value = toto Then
c.Interior.ColorIndex = I + 1
Exit For
End If
Next

Set plage1 = Nothing

Next

Next

End Sub


Ce coup là , c'est finalisé.

A+


bonjour,

Dans le code suivant, il est nécessaire de faire une référence à une cellule
bidon (Z1) pour initialiser plage1.L'essentiel est qu'il n' y ait pas de
valeur numérique dans Z1.

On suppose que tes données vont de la ligne 2 à derniereligne et que tes
colonnes vont de 1 à 6
Le code couleurs utilisés pour la séquence des couleurs est celui d'Excel,
tu peux changer la nature des couleurs plutot que respecter la séquence de
couleurs de 2 à 8 en déclarant juste avant c.Interior.ColorIndex = I + 1 la
valeur de la couleur que tu désires pour aller de vert à rouge puisque la
boucle de compraraison des valeurs est faite du plus petit vers le plus grand
(à toi de voir)

Attention ensuite que si 2 valeurs sont strictement égales, leurs codes
couleurs seront quand même différents.

Sub Macro1()

Dim plage1 As Range, plage as range

for J=2 to derniereligne

Set plage = Range(Cells(J, 1), Cells(J, 6))
Set plage1 = Range("Z1")

For I = 1 To 6

For Each c In plage
If c.Interior.ColorIndex = xlNone Then
Set plage1 = Union(c, plage1)
End If
Next

toto = Application.WorksheetFunction.Min(plage1)

For Each c In plage1
If c.Value = toto Then
c.Interior.ColorIndex = I + 1
Exit For
End If
Next

Set plage1 = Range("Z1")

Next

next

End Sub

A+



Bonjour à tous et meilleurs voeux pour cette nouvelle année.

Voilà mon problème et j'espère qu'une solution existe, je pense que oui
mais je n'ai pas trouver à ce jour

J'ai à faire un tri sur 6 cellules à l'horizontale comportant des prix et je
voudrais que la cellule se colore en fonction du classement (exemple le
moins cher en vert avec progression de la couleur jusqu'au Rouge pour le
plus cher.
Ce tri se repétant sur la totalité de la feuille environ 2500 lignes

Exemple, le tri se faisant sur les colonnes B, D, F, H, J et K

A B C D E F
G H I J K L
1 86,70 ? 1 120,90 ? 1 28,50 ? 1 30,16 ? 1 45,00 ? 1 23,00 ?
1 86,70 ? 1 141,30 ? 1 35,60 ? 1 33,14 ? 1 60,00 ? 1 30,00 ?
1 110,80 ? 1 110,70 ? 1 46,50 ? 1 38,12 ? 1 60,00 ? 1 27,00 ?
1 120,50 ? 1 518,40 ? 1 32,50 ? 1 55,52 ? 1 130,00 ? 1 10,00 ?
1 127,00 ? 1 594,00 ? 1 41,50 ? 1 60,17 ? 1 150,00 ? 1 15,00 ?



En espérant la solution je vous en remercie à l'avance

Salutations à tous

Patrick