Couleur de cellules

Bonsoir,

je reviens vers vous pour une autre requête.

je souhaiterais qu'a chaque entrée dans un tableau, que pour un même mot les lignes soient de la meme couleur. et que pour chaque mot different, la couleur change automatiquement. Vous allez me dire de le faire avec une mise en forme conditionnelle, mais est ce possible sans connaitre les mots à l'avance?

Merci par avance.

Cordialement.

14test.xlsx (9.54 Ko)

Bonsoir le forum,

Une règle par mot :

mfc mots
mbbp a écrit :

Bonsoir le forum,

Une règle par mot :

et si le mot n'est pas connu? je me demande si c'est possible de le faire automatiquement, comme un scan des mots dans la colonne par exemple

Bonsoir,

comme ça vite fait :

un code VBA qui "calcul" le mot, ce qui donne une valeur, à cette valeur égal une couleur.

Il est vrai que même valeur = même couleur.

L'avantage : pas besoin de connaître le mot, c'est la valeur que représente ce mot qui est utilisé pour choisir la couleur.

@ bientôt

LouReeD

LouReeD a écrit :

Bonsoir,

comme ça vite fait :

un code VBA qui "calcul" le mot, ce qui donne une valeur, à cette valeur égal une couleur.

Il est vrai que même valeur = même couleur.

L'avantage : pas besoin de connaître le mot, c'est la valeur que représente ce mot qui est utilisé pour choisir la couleur.

@ bientôt

LouReeD

oui c'est dans ce style que j'aimerais mais le vba, comment dire, c'est pas ma tasse de thé

Mais la demande est une MFC pour toute la ligne.

Une autre proposition : la couleur de la ligne change avec un mot différent du précédent.

Deux couleurs utilisées.

mbbp a écrit :

Mais la demande est une MFC pour toute la ligne.

Une autre proposition : la couleur de la ligne change avec un mot différent du précédent.

Deux couleurs utilisées.

je viens de tester ton fichier, mais en rajoutant par exemple "frite", rien ne se passe....

Toutes les cellules du tableau reçoivent un fond bleu.

Cela permet de n'avoir à définir q'une seule règle (ici : fond vert)

En F6:F30 il y a une formule de calcul : il faut la tirer vers le bas.

mbbp a écrit :

Toutes les cellules du tableau reçoivent un fond bleu.

Cela permet de n'avoir à définir q'une seule règle (ici : fond vert)

En F6:F30 il y a une formule de calcul : il faut la tirer vers le bas.

ok, j'avais pas vu la colonne f, mais j'ai un soucis (encore, pour un meme mot, la couleur peut etre different dans votre exemple

elsabio1977 a écrit :

ok, j'avais pas vu la colonne f, mais j'ai un soucis (encore, pour un meme mot, la couleur peut etre different dans votre exemple

Oui, ce qui est mis en exergue : c'est le changement de mot.

mbbp a écrit :
elsabio1977 a écrit :

ok, j'avais pas vu la colonne f, mais j'ai un soucis (encore, pour un meme mot, la couleur peut etre different dans votre exemple

Oui, ce qui est mis en exergue : c'est le changement de mot.

c'est gentil certes, mais comme dis dans le post de départ, je souhaiterais que pour un meme mot, la couleur soit identique, et differente avec des mots differents

elsabio1977 a écrit :

je souhaiterais que pour un meme mot, la couleur soit identique, et differente avec des mots differents

Sans VBA cela me semble difficile à réaliser.

mbbp a écrit :
elsabio1977 a écrit :

je souhaiterais que pour un meme mot, la couleur soit identique, et differente avec des mots differents

Sans VBA cela me semble difficile à réaliser.

malheureusement je n'y connais pas grand chose en vba

Voilà un petit fichier :

9loureed.xlsm (16.60 Ko)

reste à "trouver" une formule afin d'avoir une palette de couleur qui soit correcte.

Pour ce qui marche :

un même mot avec la même casse = la même couleur.

Pour ce qui ne va pas :

la palette de couleur par formule.

Le principe : chaque lettre du mot est "transformée" en valeur numérique ASCII puis est multiplié par 100 et sa position dans le mot.

La somme de tout ceci nous donne la valeur de la couleur du mot.

La colonne surveillée pour les mots est la colonne A de la feuille "Test"

La mise en couleur va de la colonne B à la colonne H.

Mais il reste pas la formule à mettre au point

@ bientôt

LouReeD

Pour remplacer la formule de la couleur, on peut imaginer un tirage aléatoire de la valeur de la couleur.

Comme on a le choix entre plus d'1 million de couleur depuis Excel 2007...

Le tout devra être mis en mémoire dans une feuille et un tableau VBA afin d'attribuer une nouvelle couleur par tirage au sort pour un nouveau mot.

Si le mot existe dans le tableau alors on prend la couleur correspondante.

Mais là c'est une autre histoire...

@ bientôt

LouReeD


Bonsoir,

Bonsoir,

je reviens vers vous pour une autre requête.

je souhaiterais qu'a chaque entrée dans un tableau, que pour un même mot les lignes soient de la meme couleur. et que pour chaque mot different, la couleur change automatiquement. Vous allez me dire de le faire avec une mise en forme conditionnelle, mais est ce possible sans connaitre les mots à l'avance?

En fait la demande n'est pas une MFC, il suggère qu'on lui propose une MFC, hors sans connaître le nombre de mot et les mots la MFC n'est pas possible. Seul VBA peut le faire, et VBA "fera" la MFC.

@ bientôt

LouReeD

Bonjour à tous et Alfonso !!

Je reprenais l'idée de LouReed ( ) avant d'avoir vu la façon dont il l'avait mise en pratique...

J'ai suivi une voie plus simple loin des ThemeColor, Pattern et autre TintAndShade... sachant que les couleurs disponibles peuvent toutes être définies par une valeur RGB... (discussion à revoir plus tard).

Contrairement à mes habitudes, j'ai utilisé ColorIndex (dont je professe habituellement qu'il faut l'abandonner au profit de Color en définissant une valeur RGB) car la définition d'une succession de couleur a utiliser en nombre suffisant nécessite une étude sur un algorithme de variation permettant de coder les couleurs utilisées à partir d'un index de 1 à x... ce qui prend du temps. Mais qui devrait pouvoir être fait ultérieurement.

Le système que je propose repose sur :

1) Une plage nommée (Plage) délimitant la plage affectée par la coloration des lignes, en l'occurrence ici je l'ai définie par : B1:E40.

2) Le mot commandant la coloration se trouve se trouve en première colonne de Plage.

3) Une évènementielle Change (de même que LouReed) qui réagit aux changements affectant cette première colonne de Plage.

Lors d'un changement la procédure recompose l'ensemble des couleurs sur la plage. L'utilisation d'un dico dont la clé est le mot en première colonne et la valeur un index incrémenté pour définir la couleur. En l'absence de mot, la ligne n'est pas colorée ou est décolorée.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim d As Object, i%, c%
    If Not Intersect(Target, [Plage].Columns(1)) Is Nothing Then
        Set d = CreateObject("Scripting.Dictionary")
        c = 2
        With [Plage]
            For i = 1 To .Rows.Count
                If .Cells(i, 1) <> "" Then
                    If d.exists(.Cells(i, 1).Value) Then
                        .Rows(i).Interior.ColorIndex = d(.Cells(i, 1).Value)
                    Else
                        c = c + 1: d(.Cells(i, 1).Value) = c
                        .Rows(i).Interior.ColorIndex = c
                    End If
                Else
                    .Rows(i).Interior.ColorIndex = xlColorIndexNone
                End If
            Next i
        End With
    End If
End Sub

Ici j'ai utilisé l'index affecté comme valeur de ColorIndex, à partir de 3 (pour éliminer le blanc et le noir), mais je pense qu'il convient de se servir de cet index pour définir une valeur de couleur dans l'espace RGB, car ColorIndex demeure trop limité et on atteindra vite des couleurs trop sombres...

Cordialement.

19elsabio-test.xlsm (16.39 Ko)

Bonjour MFerrand !

C'est exactement qu'est ce que je voulais faire....

Après l'idée d'un rnd sur 16 000 000 couleur, j'étais partis sur 3 rnd sur 256 valeurs afin de créer des valeurs RGB...

Bref votre code professionnel avec un dico pour être certain qu'il n'y est pas de doublon de couleur... Enfin si j'ai bien compris....

Il m'en reste des choses à apprendre !

@ bientôt

LouReeD

Salut LouReed,

Pas de complexe d'infériorité ! Pas de mise, la démarche est la même globalement, les détails relèvent de diversifications (qui s'accroissent avec l'âge [hélas !]). L'essentiel demeure l'orientation de la réflexion pour aborder un problème.

Pas le temps de poursuivre dans l'immédiat (quelques contraintes...)

J'ai étalonné une feuille avec 756 couleurs, en vue d'ensuite réduire à un éventail plus limité. Résultat pas encore satisfaisant pour faire un choix... mais là on est dans un domaine esthétique et la perception des couleurs est aussi en partie subjective...

A+

MFerrand a écrit :

Bonjour à tous et Alfonso !!

Je reprenais l'idée de LouReed ( ) avant d'avoir vu la façon dont il l'avait mise en pratique...

J'ai suivi une voie plus simple loin des ThemeColor, Pattern et autre TintAndShade... sachant que les couleurs disponibles peuvent toutes être définies par une valeur RGB... (discussion à revoir plus tard).

Contrairement à mes habitudes, j'ai utilisé ColorIndex (dont je professe habituellement qu'il faut l'abandonner au profit de Color en définissant une valeur RGB) car la définition d'une succession de couleur a utiliser en nombre suffisant nécessite une étude sur un algorithme de variation permettant de coder les couleurs utilisées à partir d'un index de 1 à x... ce qui prend du temps. Mais qui devrait pouvoir être fait ultérieurement.

Le système que je propose repose sur :

1) Une plage nommée (Plage) délimitant la plage affectée par la coloration des lignes, en l'occurrence ici je l'ai définie par : B1:E40.

2) Le mot commandant la coloration se trouve se trouve en première colonne de Plage.

3) Une évènementielle Change (de même que LouReed) qui réagit aux changements affectant cette première colonne de Plage.

Lors d'un changement la procédure recompose l'ensemble des couleurs sur la plage. L'utilisation d'un dico dont la clé est le mot en première colonne et la valeur un index incrémenté pour définir la couleur. En l'absence de mot, la ligne n'est pas colorée ou est décolorée.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim d As Object, i%, c%
    If Not Intersect(Target, [Plage].Columns(1)) Is Nothing Then
        Set d = CreateObject("Scripting.Dictionary")
        c = 2
        With [Plage]
            For i = 1 To .Rows.Count
                If .Cells(i, 1) <> "" Then
                    If d.exists(.Cells(i, 1).Value) Then
                        .Rows(i).Interior.ColorIndex = d(.Cells(i, 1).Value)
                    Else
                        c = c + 1: d(.Cells(i, 1).Value) = c
                        .Rows(i).Interior.ColorIndex = c
                    End If
                Else
                    .Rows(i).Interior.ColorIndex = xlColorIndexNone
                End If
            Next i
        End With
    End If
End Sub

Ici j'ai utilisé l'index affecté comme valeur de ColorIndex, à partir de 3 (pour éliminer le blanc et le noir), mais je pense qu'il convient de se servir de cet index pour définir une valeur de couleur dans l'espace RGB, car ColorIndex demeure trop limité et on atteindra vite des couleurs trop sombres...

Cordialement.

Merci MFerrand, c'est exactement ce que je souhaitais

Il faut vraiment que je prenne des cours de vba pour me faciliter la vie et éviter d'embeter les autres..........

Je remercie tout ceux qui ont essayé de m'aider malgré mes explications un peu tordues parfois

MFerrand, le forum bonsoir,

en fait je comprend mieux le fonctionnement :

la première couleur est la rouge, si sur le fichier on ajoute un mot au dessus de la liste, c'est ce mot qui passe rouge, et la suite des couleurs est "décalée" vers le haut, par contre à chaque mot identique, on trouve la même couleur.

Mon idée, était d'avoir un tableau "mot-couleur" afin que quelque soit l'endroit où le mot se trouve, il reste avec sa couleur d'origine.

Si fritte est écrit et que la macro lui attribue le bleu, alors le bleu serait pour frite et seulement frite sans passer au vert si un nouveau est entré au dessus ou à droite ou ailleurs...

Je continue donc de travailler dans la direction de mon idée

@ bientôt

LouReeD

Rechercher des sujets similaires à "couleur"