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

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

3 réponses

  1. Contributeur
    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
    1. 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
      1. 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