Compter les cellules en vert

Résolu/Fermé
vince_nus - 19 juin 2012 à 15:39
 vince_nus - 20 juin 2012 à 10:02
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
19 juin 2012 à 15:53
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 juin 2012 à 15:53
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
19 juin 2012 à 18:03
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 mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
Modifié par Bidouilleu_R le 20/06/2012 à 09:01
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 juin 2012 à 09:15
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
bonjour à tous

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

bonne journée
0