[Excel] Mise en forme un peu spéciale

Résolu
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous.
Tout d'abord merci pour les réponses que j'ai eu dans un autre forum. Je n'ai pas eu le temps de remercie les personnes. Leurs réponses m'a beaucoup aidé.

Voici un autre probleme que je ne sais pas résoudre.
Ex:

DURANT
DURANT
DUPONT
DUPONT
DUPONT
MARTIN
MARTIN
MARTIN
MARTIN

Voici une liste de nom (situés dans une colonne) dont l'occurrence peut varier.
Je voudrais travailler avec 2 couleurs (minimum, plus pourquoi pas), couleur A et couleur B par exemple, de telle sorte que les lignes de DURANT soient de la couleur A, puis les lignes de DUPONT de la couleur B, les lignes de MARTIN de la couleur A, etc..
Si possible, en évitant d'appliquer cette mise en forme sur les lignes vides (vide étant défini si la 1ere colonne est vide)

Une idée.?
A voir également:

11 réponses

Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
Après creusage de méninges, j'ai trouvé la solution, voici la macro pour ceux que ca intéresse.


Je rapelle mon but : si plusieurs ligne contiennent la meme valeur dans la premiere colonne (if target.value=target.offset......) alors je veux colorier la cellule de la meme couleur que la précédente, mes cellules ayant la meme valeur étant toujours contigues.
ex:
1 DUPONT Pierre < COULEUR 36
1 DUPONT Pierre < 36
2 DUPONT Martin <34
2 DUPONT Martin <34
2 DUPONT Martin <34
43 HENRY Thierry <36
5 GERARD Philippe <34

La deuxieme partie du code est juste là dans le cas ou la premiere ligne DUPONT Pierre a la couleur 34, du coup on inverse...

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 1 Then
        Exit Sub
    End If
    On Error GoTo sortie
    If Target.Value = Target.Offset(-1, 0).Value Then
        If Target.Offset(-1, 0).Interior.ColorIndex = 36 Then
            For c = 0 To 9
                Target.Offset(0, c).Interior.ColorIndex = 36
            Next
        Else
            For c = 0 To 9
                Target.Offset(0, c).Interior.ColorIndex = 34
            Next
        End If
        Exit Sub
    Else
        If Target.Offset(-1, 0).Interior.ColorIndex = 36 Then
            For c = 0 To 9
                Target.Offset(0, c).Interior.ColorIndex = 34
            Next
        Else
            For c = 0 To 9
                Target.Offset(0, c).Interior.ColorIndex = 36
            Next
        End If
        Exit Sub
    End If
sortie:
End Sub


Fiouh! Merci qdmm à vous pour m'avoir répondu!
++
3
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

tu as essayé avec la Mise en forme conditionnelle dans le menu Format?

lami20j
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
Je ne pense pas pouvoir m'en sortir avec la MEFC.
Si c'est possible, je ne connais pas la formule à appliquer...
0
Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
 
hello Thibane,

je te propose une MEFC un peu différente de ce que tu demandes. J'espère que ç apourra t'aider, car j'ai essayé en vain avec deux couleurs "en bascule"...

en A1, tu mets en Format Conditionnel Condition 1 : =A1<>A2, puis tu sélectionnes une bordure quelconque sur le bas de la cellule.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Je ne pense pas pouvoir m'en sortir avec la MEFC

Ben, c'est bizarre, puisque si j'ai bien compris ce que tu veux la mise en forme conditionnelle fait l'affaire et il n'y a pas des formules à taper.

J'ai testé avant de repondre et ça marche.

Tu vas seulement dans le Menu Format/Mise en forme conditonnelle et tu configure ce que tu as besoin.

lami20j
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
Ben sans formules je ne vois vraiment pas.
Tu peux me dire ce que t'y mets dans le champ??
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
En fait, si je trouve comment on définit "la cellule juste au-dessus" sous forme de formule, je pourrai m'en sortir avec les conditions "la valeur est différente" et "la valeur est égale".

Pouvez m'aider siouplait?
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

ce n'est pas ça que tu veux

Donc Menu Format /Mise à jour conditonnelle te donne ça
https://www.cjoint.com/?htqNsJ2QP6

Et le fichier après

https://www.cjoint.com/?htqOvmIvvc

J'ai selectionné la colonne entière, ainsi si jamais tu ajoutes un nom il sera tout de suite coloré.

lami20j
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
merci lami mais ta solution marche parfaitement lorsque tu as 3 noms différents...
Dans mon cas, je repete qu'il s'agit d'une base de donnée, des noms différents, j'en ai plus de 500 et la MEFC ne peut en différencier que 3...

Ceci dit, c'est tout à fait le résultat visuel que je veux, mais pour beaucoup plus de noms! ;)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

MEFC ne peut en différencier que 3...


Oups! je n'ai même pas remarqué.
Essaie ça par exemple.
J'espère que tu trouveras une solution meilleure

Option Explicit
Option Compare Text

Sub color_nom()

Dim nom As String
Dim i As Long

For i = 1 To Range("a65536").End(xlUp).Row
nom = Cells(i, 1)
    Select Case nom
        Case Is = "DUPONT"
            Cells(i, 1).Interior.ColorIndex = 27
        Case Is = "MARTIN"
            Cells(i, 1).Interior.ColorIndex = 43
        Case Is = "MICHEL"
            Cells(i, 1).Interior.ColorIndex = 31
        Case Is = ""
            Cells(i, 1).Interior.ColorIndex = 10
    End Select
Next i
End Sub
lami20j
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
Désolé lami mais....cha va po!
>je ne peux pas m'amuser à faire 500 'case'
>si ajout de nouveau nom il y a, l'utilisateur n'est pas sensé savoir qu'il faut toucher le code et rajouter un 'case'...

Ca fait mntnt plusieurs heures que je cherche sur internet, jai trouvé plein de trucs concernant les MEFC mais rien qui ne me convienne!
AAHH!!

Une idée de génie, là, comme ca?
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

je ne peux pas m'amuser à faire 500 'case'

C'est vrai, mais ça depends si ça vaut ou pas le coup.

Comme je t'ai dit J'espère que tu trouveras une solution meilleure

si ajout de nouveau nom il y a, l'utilisateur n'est pas sensé savoir qu'il faut toucher le code et rajouter un 'case'...

Je suis d'accord, mais de toute façons si tu veux utiliser une couleur pour chaque nom par exemple t'es obligé de choisir un code couleur (un code couleur aleatoire ne t'aidera pas trop, tu n'auras pas le contrôle).

Et même si MEFC avait plus de 3 conditions t'était obligé de configurer la couleur pour chaque nom (plus de 500).

Je pourrai t'aider de faire les cases même si tu as 65535 (je laisse une ligne pour en-tête), et pas en les tapant mais avec un script.

Tu n'as qu'à me donner la liste des noms. En revanche il me semble que pour les couleurs la palette d'Excel est limitée.

lami20j
0
Thibane Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   3
 
Non non non! Pas une couleur par nom!
Comme je l'ai expliqué dans l'exemple, deux couleurs suffiraient!

si vous avez besoin d'une idée du résultat : thibane@hotmail.com
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Je voudrais travailler avec 2 couleurs (minimum, plus pourquoi pas),

D'où ma confusion. Mais en ce cas la solution de Kobaya ne te convient-elle?

lami20j
0