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 à tous

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

    bonne journée
    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. 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. 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. 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