Compter nombre de cases d'1 couleur selon couleur case adjacente

Julie -  
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à créer une formule qui me permettrait de compter le nombre de cases roses pour chaque département (représentés par une couleur).

L’idée est de dire :

Pour les cases colonne A (département) de la même couleur que la case D3
COMPTABILISER les cellules roses dans la colonne B
Et écrire la somme de ces cellules (nombre de cellule) dans la case F3

J'ai essayé plusieurs combinaisons mais sans succès.

Ravie de lire vos propositions!

Lien vers le fichier:
https://www.dropbox.com/s/qquoi3aos81qhht/Table%20Example.xlsx?dl=0
A voir également:

3 réponses

Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Bonjour.

Les formules ne peuvent pas reconnaître et gérer les couleurs.
Tu as donc le choix entre :
  • Obtenir les couleurs à l'aide de la Mise en forme conditionnelle
  • Ecrire une macro en VBA.

0
Julie
 
Bonjour,

Oui, il s'agit ici de créer une VBA.

J'ai précédemment créé les deux formules suivantes pour d'autres calculs, mais cela ne me permets pas de résoudre mon problème:


Function NbColor(ByRef plage As Range, Couleur As Byte) As Long
Dim c As Range
Dim nb As Long
nb = 0
For Each c In plage
If c.Interior.ColorIndex = Couleur Then
nb = nb + 1
End If
Next c
NbColor = nb
End Function

Function NbColorSameAs(ByRef plage As Range, ByRef Cellule As Range) As Long
NbColorSameAs = NbColor(plage, Cellule.Interior.ColorIndex)
End Function
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

Ajuste ton code :
Function NbColor(ByRef plage As Range, Couleur As Byte, Rose As Byte) As Long
    Dim c As Range
    Dim nb As Long
    nb = 0
    For Each c In plage
        If c.Interior.ColorIndex = Couleur And c.Offset(, 1).Interior.ColorIndex = Rose Then
            nb = nb + 1
        End If
    Next c
    NbColor = nb
End Function

Function NbColorSameAs(ByRef plage As Range, ByRef Cellule As Range, ByRef PinkRef As Range) As Long
    NbColorSameAs = NbColor(plage, Cellule.Interior.ColorIndex, PinkRef.Interior.ColorIndex)
End Function

en F3, tu écriras :
=NbColorSameAs($A$1:$A$12;D3;$D$1)


cordialement

edit : en D1, j'ai mis un fond de couleur rose.
0