Mise en forme conditionnelle - Compter cellules

Bonjour,

Comment puis je m'y prendre pour compter le nombre de cellules adjacentes qui ont un "A" dans la première colonne et la couleur verte dans la seconde colonne ?

Je souhaiterais que le résultat soit = 2 dans mon exemple du fichier excel.

Lors d'un précédent post de ma part, je n'avais pas été très ouvert l'utilisation de VBA pour ce type de solution. En effet je ne pensait pas que la MFC était un outil de VBA que je voyais uniquement par du codage...

Merci d'avance pour votre aide.

8compter.xlsx (8.76 Ko)

Bonjour Tisajeff,

Les couleurs des cellules sont mises manuellement ou dans le vrai fichier par des MFC !?

Bonjour Bruno,

Les couleurs seront rentrées manuellement.

Re, donc il va falloir du VBA

Excel ne sait pas le faire naturellement

Voici la fonction personnalisée

Function TotalCrit(PlgLet As Range, CritLet As String, CelCoul As Range)
  Dim Cel As Range
  ' Recalculer la fonction à tout moment
  Application.Volatile
  ' Initaliser la valeur de retour
  TotalCrit = 0
  ' Pour chaque cellule de la plage contenant les lettres
  For Each Cel In PlgLet
    ' Si la cellule contient la lettre cehrchée
    If Cel.Value = CritLet Then
      ' Si la cellule de droite est de la couleur cherchée
      If Cel.Offset(0, 1).Interior.Color = CelCoul.Interior.Color Then
        ' On incrémente le nombre trouvé
        TotalCrit = TotalCrit + 1
      End If
    End If
  Next Cel
End Function

Voici le fichier avec la formule et la fonction

A+

Quand vous parlez de VBA, vous voulez parler de MFC ?

Re,

Rien à voir

MFC = Mise en Forme Conditionnelle
Gérée nativement par Excel

VBA = Visual Basic for Application, une macro si vous préférez

J'ai modifié mon post précédent et vous ai donné tout ce qu'il fallait

Très bien, je viens d'utiliser votre fichier et tout fonctionne même si je n'en doutais pas.

Maintenant je vais essayer de comprendre et de l'appliquer à mon fichier qui est plus complexe.

Encore merci !

En plus, je n'ai pas besoin de créer un nouveau module, je peux y faire appel pour d'autres comptages quelque soit ma plage et mes valeurs recherchées. Très utile.

En revanche j'ai une question : Pour lorsque je change une couleur de cellule, la valeur est longue à s'actualiser et il faut même que je rentre dans une cellule et que j'appuie sur "ENTRER" pour que la mise à jour se fasse et pour la cellule de comptage que je viens de créer, elle se met automatiquement à jour aussitôt que je change la cellule de couleur ?

En espérant réussir à me faire comprendre ...

Re,

Effectivement, la fonction ne se recalcul qu'après modification d'une cellule !

Vous pourriez ajouter un évènement SelectionChange() qui ferait un Calculate à chaque fois...mais ça risque d'être vite pénible

De toute façon il n'y a pas d'autre solution, le changement de couleur n'est pas un évènement en soit

Ok je comprends ! Merci

Bonjour Tisajeff, BrunoM45,

lorsque je change une couleur de cellule, la valeur est longue à s'actualiser...

La version TGV (Tu Graphes Vite) ou la totalisation est immédiate.

Bonjour,

Je me permets de revenir vers vous car en plus du module proposé que j'ai appliqué à plusieurs reprises, je souhaiterais seulement compter les cellules de la couleur recherchée. Le code que j'ai est le suivant

Function TotalCrit01(PlgLet As Range, CritLet As String, CelCoul As Range)
  Dim Cel As Range
  ' Recalculer la fonction à tout moment
  Application.Volatile
  ' Initaliser la valeur de retour
  TotalCrit01 = 0
  ' Pour chaque cellule de la plage de la couleur cherchée
  For Each Cel In CelCoul
    ' Si la cellule est de la couleur cherchée
    If Cel.Interior.Color = CelCoul.Interior.Color Then
      ' On incrémente le nombre trouvé
      TotalCrit01 = TotalCrit01 + 1
    End If
  Next Cel
End Function

Mais cela ne marche pas mais je ne sais pas vraiment pourquoi ...

J'ai également essayé cela :

Function TotalCrit01(CelCoul As Range)
  Dim Cel As Range
  ' Recalculer la fonction à tout moment
  Application.Volatile
  ' Initaliser la valeur de retour
  TotalCrit01 = 0
  ' Pour chaque cellule de la plage de la couleur cherchée
  For Each Cel In CelCoul
    ' On incrémente le nombre trouvé
    TotalCrit01 = TotalCrit01 + 1
  Next Cel
End Function

Finalement j'ai trouvé, l'idée était bonne mais pas la réalisation. Désolé du dérangement !

Rechercher des sujets similaires à "mise forme conditionnelle compter"