Compter les cellules en vert

Résolu
Bonjour,

comment compter et mettre dans une variable sous VBA le nombre de cellules en fond vert sur ma sélection colonne R, de R3 à R500???
je mets en vert (non de la couleur dans la palette) mais je veux compter en macro car comme je fais pas mal de modifs je vais compter à chaque fois, ce sera plus rapide, je clique et hop je rempli une cellule dans un autre onglet!

merci
windows xp, vba excel 2007

6 réponses

  1. bonjour

    quelque chose comme ça?

    Const clVert = 35
    Const plage = "A1:A10"
    
    Private Sub CommandButton1_Click()
    Dim c As Range, nbv As Long
    nbv = 0
    For Each c In Range(plage)
      If c.Interior.ColorIndex = clVert Then nbv = nbv + 1
    Next
    MsgBox nbv
    End Sub

    bonne suite
    1. rien ne se produit
      et comment mettre le nombre de cellule dans une variable car après je veux mettre cette valeur dans une cellule de mon classeur ??

      merci
  2. Modérateur
    Bonjour,
    Avec une fonction personnalisée du style :
    Function NombreSiVert(Plage As Range) As Integer
    Dim Cel As Range
    
    For Each Cel In Plage
        If Cel.Interior.ColorIndex = 10 Then NombreSiVert = NombreSiVert + 1
    Next
    End Function

    Ne reste qu'à placer, dans la cellule ou tu veux ton résultat, la formule :
    =NombreSiVert(R1:R20)
    ou
    =NombreSiVert(R1:R5180)
    ou peu importe la plage de cellules...
    Pour actualiser en cas de modif, double clic sur la cellule et entrée
    1. 1. rien ne se produit
      tu dois quand même avoir le message box qui te donne le nombre de cellules vertes
      2. et comment mettre le nombre de cellule dans une variable
      la variable nbv contient le nombre de cellules vertes

      RQ1. il y a plusieurs "verts" dans la palette, pijaku a pris 10, et j'ai pris 35, il y en a d'autres !!!
      RQ2. j'espère que tu as modifié la constante plage ="A1:A10" par ta plage

      bonne suite
      1. Salut à tous,

        pour vous aider à déméler... je ne veux pas en remettre une couche
        En suivant la fonction de Pijaku et la remarque de ccm81
        il serait judicieux de savoir quel est ce vert...
        La fonction suivante te donnera une valeur que tu pourras utiliser
        dans
        ' If Cel.Interior.ColorIndex = <Valeur de la couleur > Then NombreSiVert = NombreSiVert + 1

        ou modifier la constante dans la proposition de ccm81
        Const clVert = <Valeur de la couleur >

        Public Function Quelle_Couleur_Fond(Cel As Range) As Long 
             Application.Volatile 
             Quelle_Couleur_Fond = Cel.Interior.ColorIndex 
        End Function


        et pour l'utiliser... en supposant que ta couleur est un B10 tu pourras écrire
        dans une autre cellule =Quelle_Couleur_Fond(B10)

        bonne journée à tous
        1. Modérateur
          Salut tout le monde, CCM81, Bidouilleu,

          Merci Bidouilleu pour le "Application.volatile omis dans ma première soluce.

          Je place donc, juste au cas ou vous auriez zappé :
          Function NombreSiVert(Plage As Range) As Integer
          Dim Cel As Range
          Application.Volatile
          For Each Cel In Plage
              If Cel.Interior.ColorIndex = 10 Then NombreSiVert = NombreSiVert + 1
          Next
          End Function

          10 dans Cel.Interior.ColorIndex = 10 représente la couleur verte
          Formule en S10 par exemple saisir :
          =NombreSiVert(R1:R500)
          à actualiser par F9...

          A+
          1. bonjour à tous

            ça marche nickel
            il fallait juste trouver le bon n° de vert !

            bonne journée