Attribution d'une couleur aléatoire en fonction d'une valeur

Bonjour,

Je recherche une macros qui me permettrait de générer une couleur aléatoire à chaque ligne.

Par contre mettre une couleur identique si le numéro de la première colonne est pareil.

J'ai essayé avec les macros disponibles mais je n'arrive pas à garder la couleur identique en cas de numéro identique sur la colonne A

Exemple ci-dessous :

exemple

Vous remerciant grandement de votre retour

Cordialement

l'image que l'on voit est le résultat que tu souhaite obtenir?

Bonjour,

un petit fichier que j'avais fait il y a déjà presque ans ! Histoire de vous donner un exemple :

Le principe : en colonne A de la feuille couleur vous entrez un mot, une valeur, si cette valeur est connu dans le tableau système, alors en colonne B même ligne la couleur est affichée, si cette valeur n'est pas connue alors une couleur aléatoire et non utilisée est choisie et elle est affectée à cette valeur, comme cela pour une valeur unique on a bien une couleur unique.

Cela vous permettra peut-être d'avancer dans votre projet.

@ bientôt

LouReeD

Oui idéalement je sais que la fonction colorindex permettrai de faire cette opération.

Les colonnes N° / Référence / Nom Moa sont liée à un Excel externe.

Le problème est liée à ce problème de couleur identique en fonction d'une valeur.

Oui idéalement je sais que la fonction colorindex permettrai de faire cette opération.

Les colonnes N° / Référence / Nom Moa sont liée à un Excel externe.

Le problème est liée à ce problème de couleur identique en fonction d'une valeur.

Bonjour,

Je passe rapidement apporter une information car j'ai déjà rencontré cette limite, Excel ne peut pas gérer plus de 65 490 formats/styles de cellule uniques. Source limite

Bon en testant de mon côté avec le code ci-dessous j'ai plutôt atteint la limite au bout de 65429 lignes...

Sub test()
lig = 0
For rouge = 1 To 255 Step 5
    For bleu = 1 To 255 Step 5
        For vert = 1 To 255 Step 5
            lig = lig + 1
            Cells(lig, 1).Interior.Color = RGB(rouge, bleu, vert)
        Next vert
    Next bleu
Next rouge
End Sub

Attention donc aux couleurs aléatoires qui pourraient atteindre cette limite sur un fichier volumineux...

Ausecour bonjour et bonne année à vous !

Pour avoir travaillé sur mon application "Mosaïque" j'ai découvert également cette limite, mais si on se limite à 50000 couleurs, avec des lignes qui se répète en donnée, on peut arriver à des tableaux de 200000 lignes ! (4 lignes rouge par exemple). Corby61 nous indique pas la taille de son tableau mais cela peut aller loin en terme de ligne...

@ bientôt

LouReeD

Corby61, je ne vois pas pourquoi vous parlez de ColorIndex ?

@ bientôt

LouReeD

Ausecour bonjour et bonne année à vous !

Pour avoir travaillé sur mon application "Mosaïque" j'ai découvert également cette limite, mais si on se limite à 50000 couleurs, avec des lignes qui se répète en donnée, on peut arriver à des tableaux de 200000 lignes ! (4 lignes rouge par exemple). Corby61 nous indique pas la taille de son tableau mais cela peut aller loin en terme de ligne...

@ bientôt

LouReeD

Merci!

Bonne année également!

Oui avec 50 000 couleurs on peut voir loin.

Après pas sûr qu'autant de couleurs soient nécessaires vu la difficulté pour l'oeil humain de voir les légères variations

ColorIndex peut être changé avec le thème assez rapidement, est-ce la raison de cet intérêt soudain?

Si le nombre de valeur n'est pas trop conséquent (ColorIndex je crois cible une cinquantaine de couleur), ET que ces valeurs sont connues "à l'avance" alors un code VBA pour mettre en place cinquante MFC selon valeur est faisable, une fois le code lancé, vous pourriez presque l'effacer...

Comme vous pouvez le voir il y a plusieurs solutions, mais avec un fichier représentatif ou bien des données supplémentaires, il sera plus simple de choisir l'une ou l'autre.

@ bientôt

LouReeD

Oui de mon côté colorindex fonctionne avec des valeurs de 1 à 56, j'obtiens ça:

Sub test()
Dim numCouleur As Integer

numCouleur = 0

For j = 1 To 24 Step 3
    For i = 1 To 7
        numCouleur = numCouleur + 1
        Cells(i, j).Interior.PatternColorIndex = numCouleur
        Cells(i, j + 1) = numCouleur
    Next i
Next j
End Sub
image

Pour jouer sur les couleurs de thème c'est un peu plus compliqué comme il faut jouer avec les propriétés:

ThemeColor et TintAndShade

Sub test_couleur()
For j = 1 To 12
    variations = Array(0, 0.799981688894314, 0.599993896298105, 0.399975585192419, -0.249977111117893, -0.499984740745262)

    For i = 0 To 5
        Cells(13 + i, j).Interior.ThemeColor = j
        Cells(13 + i, j).Interior.TintAndShade = variations(i)
    Next i
Next j
End Sub
image

Résultat avec le thème Office.

bonjour Ausecours,LouReeD,Corby61,

on peut se demander si avec colorindex, on a besoin d' "aléatoire", parce qu'autrement je trouve qu'on risque de répéter certains couleurs trop tôt.

voir PJ, colonnes C:E = dans une séquence de 1 à 56 et colonnes G:I = aléatoire

38corby.xlsm (47.89 Ko)
image

Pour moi aléatoire = le choix parmi colorindex mais tout de même unique par rapport aux valeurs. Donc une possibilité de 56 valeurs, ou plutôt 54 si on enlève le blanc et noir.

Avec colorisindex, on peut attribuer dans l'ordre de l'index. 

@ bientôt

LouReeD

Rechercher des sujets similaires à "attribution couleur aleatoire fonction valeur"