Couleur de fond automatique dans une liste

Bonjour,

Pour faire un joli tableau bien lisible, j'aimerais appliquer une même couleur de fond aux cellules identiques d'une même colonne (voir fichier joint).

Comme ces cellules sont triées par ordre alphabétique dans la colonne, l'idée est de faire apparaître des paquets de cellules ayant la même valeur, mais sans multiplier les couleurs (alterner 2 couleurs m'irait bien).

Evidemment, à faire à la main, ça n'est pas difficile. Mais comme le tableau est destiné à évoluer, je cherche à automatiser l'application d'une couleur de fond, et je n'y arrive pas avec les formats conditionnels, et en VBA, c'est bien au-delà de mes maigres capacités.

Y a-t-il quelqu'un pour m'aider dans l'hyperespace ?

Merci !

83exemple-2.xls (14.00 Ko)

Bonjour,

Une piste en VBA

Copiez le code suivant dans un module standard

'### Adapter les constantes (correspondance avec le ColorIndex) ###
Const COULEUR1 As Long = 36   'jaune
Const COULEUR2 As Long = 15   'gris
'###################################################################

Sub Couleurs()
Dim R As Range
Dim var
Dim Deb&
Dim Fin&
Dim Col&
Dim i&
Dim cpt&
Dim Plage() As Range
Set R = Selection
If R.Count = 1 Or R.Columns.Count > 1 Or _
    InStr(1, R.Address, ",") > 0 Then Exit Sub
Deb& = R.Row
Col& = R.Column
Set R = R.Resize(R.Rows.Count + 1, 1)
var = R
For i& = 2 To UBound(var, 1)
  If var(i&, 1) <> var(i& - 1, 1) Then
    cpt& = cpt& + 1
    ReDim Preserve Plage(1 To cpt&)
    Fin& = R.Row + i& - 2
    Set Plage(cpt&) = Range(Cells(Deb&, Col&), Cells(Fin&, Col&))
    Deb& = Fin& + 1
  End If
Next i&
If cpt& = 0 Then Exit Sub
For i& = 1 To UBound(Plage)
  If i& Mod 2 = 0 Then
    Plage(i&).Interior.ColorIndex = COULEUR2
  Else
    Plage(i&).Interior.ColorIndex = COULEUR1
  End If
Next i&
End Sub

Sélectionnez la plage à colorier qui doit être sur une seule colonne (pas de multi sélections) et lancez la macro Couleurs.

Cordialement.

PMO

Patrick Morange

Merci beaucoup pour la réponse, qui marche bien me semble-t-il, mais qui nécessite d'exécuter la macro Couleurs à chaque fois.

De mon côté, j'avais essayé de résoudre la question avec des formats conditionnels, mais sans y arriver...

Bonjour,

Il faudrait connaître la ligne de départ et la colonne de la zone à traiter.

Si elles sont immuables on peut imaginer une automatisation par les procédures évènementielles sans passer par une sélection manuelle préalable.

Pouvez-vous apporter des précisions ?

Cordialement.

PMO

Patrick Morange

Bonsoir

Avec une MFC un peu élaborée

Cordialement

118exemple-2.zip (49.97 Ko)
PMO a écrit :

Il faudrait connaître la ligne de départ et la colonne de la zone à traiter.

Comme mon fichier est très évolutif, je préfèrerais une MFC indépendante de la zone à traiter.

J'ai fait une tentative avec la fonction colorcell : en vérifiant si la valeur de la cellule précédente est différente, et si oui, en basculant vers une autre couleur. Malheureusement, colorcell semble ne pas réagir aux MFC...

-- Ven Jan 29, 2010 12:05 am --

Amadéus a écrit :

Avec une MFC un peu élaborée

Suffisamment élaborée pour que je ne comprenne pas tout !

Bon, en première approche, ça marche, mais quand je rajoute des lignes, ça marche plus trop...

Mais je ne sais pas trop quoi faire pour que ça marche.

Merci pour ta réponse en tous cas.

Bonjour

Bon, en première approche, ça marche, mais quand je rajoute des lignes, ça marche plus trop...

Mais je ne sais pas trop quoi faire pour que ça marche.

Exact, car il faudrait à ce moment là copier le format sur la nouvelle ligne. Nul doute qu'un amateur VBA peut te faire cela en 3 lignes de Code. Faisons appel à eux...

Pour ma part, sur mon 2003 XP, ajouter une ligne ou l'insérer recopie automatiquement le format dés que quelque chose est saisi et validé dans la cellule

Cordialement

Merci pour ta réponse. C'est impressionnant !.....mais, il reste un petit bug : la MFC marche bien sur des listes triées, mais quand une valeur revient 2 fois ou plus dans la colonne, sans tri, la couleur de fond ne change pas (voir le fichier joint)

43exemple-3.xls (13.50 Ko)

Bonjour

Pour traiter un sujet, on part généralement en tenant compte de l'énoncé

Comme ces cellules sont triées par ordre alphabétique dans la colonne, l'idée est de faire apparaître des paquets de cellules ayant la même valeur,

Ceci explique cela..

Cordialement

Mea culpa : pour exposer mon problème simplement, j’ai éliminé une des données du problème qui m’apparaissait mineure.

En fait, la feuille de calcul pour laquelle je cherche une solution de type MFC est un mémento de tâches à faire phase par phase dans un projet.

A l’intérieur d’une phase, les tâches sont triées. En revanche, un même nom de tâche peut apparaître dans différentes phases, et là, la MFC de Boigontier ne marche plus trop… (voir fichier joint).

67exemple-4.xls (14.50 Ko)

Bonjour

Est-ce concevable avec une colonne intermédiaire (à masquer)?

Cordialement

capture d ecran 486
27exemple-4.xls (17.00 Ko)

Merci pour ta réponse.

Je préfèrerais éviter cette solution car, comme je ne suis pas le seul à renseigner ce tableau, je ne suis pas sûr que tout le monde mettra bien la formule dans la colonne masquée...

1test-ac.xlsx (15.46 Ko)
Rechercher des sujets similaires à "couleur fond automatique liste"