Compter les cellules en vert

Résolu
vince_nus -  
 vince_nus -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. vince_nus
       
      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
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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+
    0
  7. vince_nus
     
    bonjour à tous

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

    bonne journée
    0