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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

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

bonne journée
0