Association couleur et valeur

Lleytt

XLDnaute Nouveau
Bonjour à tous,

Je suis novice sur Excel et j'aimerais savoir s'il était possible d'associer un fond de couleur cellule à une valeur.
Je m'explique:

J'ai un tableau de C2 à S31 avec des cases remplies ou non. Certaines ont un fond de couleur particulier qui varie. Ce fond est attribué manuellement.
A côté de ça, j'aimerais effectuer un tableau qui traduit les couleurs. C'est-à-dire si dans une colonne la couleur bleu est présente 1 fois alors s'affichera dans la cellule le chiffre 1.
J'aimerais ainsi pouvoir décompter précisément le nombre de cases colorées d'une certaine manière.

Cela est-il possible via une formule SI couleur=..., valeur 1..., valeur 0 ?

Cordialement,

Lleyt
 

job75

XLDnaute Barbatruc
Re : Association couleur et valeur

J'aimerais pouvoir aussi exécuter cette même pratique sur certaines parties du tableau. Par exemple de C2 à S7, de C8 à S8, de D9 à S9 ou encore C10 à S15... afin d'avoir un détail des résultats trouvés par la formule que vous m'avez communiquée.

Voyez si ceci vous convient :

Code:
Sub CompteCouleurs()
Dim r As Range
Application.ScreenUpdating = False
[AA3].Resize(Rows.Count - 2, Columns.Count - 26).Clear 'RAZ
For Each r In Range("AA1", Cells(1, Columns.Count).End(xlToLeft))
  If r <> "" Then Restitution Range(r), r.Column
Next
Application.Goto [AA1], True 'cadrage
End Sub

Sub Restitution(r As Range, col%)
Dim d As Object, a, b, i&
Set d = CreateObject("Scripting.Dictionary")
For Each r In r
  If r.Interior.ColorIndex <> xlNone Then _
    d(r.Interior.Color) = d(r.Interior.Color) + 1
Next
'---restitution---
If d.Count Then
  a = d.keys: b = d.items
  For i = 0 To UBound(a)
    Cells(i + 3, col).Interior.Color = a(i)
    Cells(i + 3, col + 1) = b(i)
  Next
  '---formatage et tri---
  Columns(col + 1).HorizontalAlignment = xlCenter
  Cells(2, col).Resize(Rows.Count - 1, 2).Sort Columns(col + 1), xlDescending
End If
End Sub
Fichier joint, merci à Roger : j'ai pris son beau tableau de couleurs, il ne m'en voudra pas :)

A+
 

Pièces jointes

  • CompteCouleurs(1).xlsm
    23.9 KB · Affichages: 30

ROGER2327

XLDnaute Barbatruc
Re : Association couleur et valeur

Suite...


Bien entendu, respectez cette consigne :​
Code:
'|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
'| Ajouter la référence à la bibliothèque Microsoft Scripting Runtime (scrrun.dll) au projet ! |
'|_____________________________________________________________________________________________|
Si vous ne voulez pas ajouter cette référence au classeur, remplacez​
Code:
Dim i&, j&, r, z, ck, ci, c As New Scripting.Dictionary
par​
Code:
Dim i&, j&, r, z, ck, ci, c As Object 
Set c = CreateObject("Scripting.Dictionary")
(mais c'est moins bien...)


ℝOGER2327
#7825


Mardi 10 Clinamen 142 (Rémission des Poissons - fête Suprême Quarte)
12 Germinal An CCXXIII, 6,5218h - charme
2015-W14-3T15:39:09Z
 

ROGER2327

XLDnaute Barbatruc
Re : Association couleur et valeur

Suite...


... à un message privé faisant état d'un problème d'adaptation à plusieurs onglets, je joins un exemple (Décompte par couleurs (3).xlsm) reprenant mon précédent classeur, et un autre classeur avec un code plus rationnel (Décompte par couleurs (4).xlsm).​


Bonne nuit.


ℝOGER2327
#7827


Mardi 10 Clinamen 142 (Rémission des Poissons - fête Suprême Quarte)
12 Germinal An CCXXIII, 9,7433h - charme
2015-W14-3T23:23:02Z
 

Pièces jointes

  • Décompte par couleurs (3).xlsm
    38.5 KB · Affichages: 18
  • Décompte par couleurs (4).xlsm
    36.8 KB · Affichages: 18

job75

XLDnaute Barbatruc
Re : Association couleur et valeur

Bonjour Lleytt, le fil, le forum,

Je précise juste un détail.

Si comme Roger on veut compter les cellules "incolores" on utilisera :

Code:
For Each r In r
  d(r.Interior.Color) = d(r.Interior.Color) + 1
Next
Il faut savoir que la propriété .Color ne fait pas de différence entre les cellules non colorées (.ColorIndex = xlNone) et les cellules colorées en blanc (.ColorIndex = 2).

Fichier (2).

Edit 1 : j'ai mis les totaux des nombres en ligne 2.

Edit 2 : au cas où l'on veut modifier les références des plages en ligne 1 j'ai ajouté cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column > 26 Then CompteCouleurs
End Sub
Bonne journée.
 

Pièces jointes

  • CompteCouleurs(2).xlsm
    25.2 KB · Affichages: 18
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Association couleur et valeur

Re...


(...)
Il faut savoir que la propriété .Color ne fait pas de différence entre les cellules non colorées (.ColorIndex = xlNone) et les cellules colorées en blanc (.ColorIndex = 2).
(...)
On peut aussi savoir que cela n'est vrai qu'en lecture.
En écriture, Interior.Color gère aussi la transparence. Une instruction comme​
Code:
Range("A1").Interior.Color = xlNone
ou​
Code:
Range("A1").Interior.Color = -4142
supprime toute couleur de fond de la cellule A1 contrairement à​
Code:
Range("A1").Interior.Color = vbWhite
ou​
Code:
Range("A1").Interior.Color = 16777215
qui donne un fond blanc à la cellule A1.

Comme le problème posé est de compter les cellules en fonction de leur couleur de fond, je préfère distinguer les cellules incolores des cellules colorées (le fussent-elles en blanc, dont les puristes diront que ce n'est pas une couleur).

Sinon, pourquoi distinguer les cellules incolores des cellules à fond noir dont les susdits puristes diront de même que ce n'est pas une couleur ?

Cela dit, c'est une affaire de choix personnel : à Lleytt de décider...

En pièce jointe, une version modifiée de mon dernier envoi, dans laquelle la mention incolore est remplacée par -4142.


Bonne journée.


ℝOGER2327
#7828


Mercredi 11 Clinamen 142 (Saint Maquereau, intercesseur - fête Suprême Quarte)
13 Germinal An CCXXIII, 5,4322h - morille
2015-W14-4T13:02:14Z
 

Pièces jointes

  • Décompte par couleurs (5).xlsm
    40.7 KB · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
312 512
Messages
2 089 193
Membres
104 060
dernier inscrit
peffaumoikemmi-pro-5430