Nombre de cellules selon leur couleurs [Résolu/Fermé]

Signaler
-
 Mohamed Bhd -
Bonjour,


J'aimerais créer une formule sur Excel qui me permette de calculer le nombre de cellule rouges, vertes et grises non vides.

Pour calculer le nombre de cellules non vide j'ai utilisé la fonction NBVAL qui fonctionne très bien mais pour calculer le nombre de cellules non vide en fonction de leur couleur je ne sais pas comment faire.

Pouvez vous m'aider ?

11 réponses

Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
811
Re le forum

Code à coller dans un module

Function NbreCellulesCouleur(Plage As Range, Couleur As Byte) As Long
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée
'Plage: plage de cellules à inspecter
'Couleur: valeur de la couleur cherchée

Application.Volatile

Dim Cellule As Range

For Each Cellule In Plage
    If Cellule.Interior.ColorIndex = Couleur And Not IsEmpty(Cellule) Then
        NbreCellulesCouleur = NbreCellulesCouleur + 1
    End If
Next Cellule

End Function

Mode d'utilisation de la formule
=NbreCellulesCouleur(B4:B8;3)

Tableau des couleurs : ColorIndex

Mytå
18
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Je viens de comprendre! Désolé My Bad!
Cela s'aplik t'il si la mise en forme est conditionelle?
Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
811
Salut le Forum

Ne fonctionne pas pour les couleurs découlant d'une MFC.

Mytå
J'ai trouvé la solution que j'attendais, merci, cela fonctionne aussi avec la couleur du texte et dans ce cas, il faut changer Interior par Font et cela donne ceci :

Function NbreCellulesCouleur(Plage As Range, Couleur As Byte) As Long
'Compter le nombre de texte d'une couleur donnée dans une plage donnée
'Plage: plage de cellules à inspecter
'Couleur: valeur de la couleur cherchée

Application.Volatile

Dim Cellule As Range

For Each Cellule In Plage
If Cellule.Font.ColorIndex = Couleur And Not IsEmpty(Cellule) Then
NbreCellulesCouleur = NbreCellulesCouleur + 1
End If
Next Cellule

End Function

Et pour trouver la valeur de la couleur, tout est expliqué sur le lien qui suit à l'aide d'un module complémentaire NumCoulCelPol.xla : http://gerard.g.pagesperso-orange.fr/logexl_05.htm#Numero_couleur_cellule

Merci !
le fichier ColorIndex est non disponible
Messages postés
9579
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2020
1 927
re

voir le fichier joint

http://www.cijoint.fr/cjlink.php?file=cj201101/cijAiWMNqg.xls

pour voir le code
clic-droit sur l'onglet de la feuille-visualiser le code
dans Feuil1 tu as les codes des deux boutons
dans Module 1 le code de Myta et (voir RQ2)

1. Clic sur Table code pour avoir ta table à toi
2. Selectionner une cellule puis Clic sur couleur cellule pour avoir son code couleur

RQ1. la creation d'un bouton n'est pas trop compliquée
- Affichage-Boites a outils controles
- le petit triangle permet de passer du mode creation au mode execution
- passer en mode creation (le petit triangle)
- choisir le bouton et le mettre dans la feuille
- clic-droit sur le bouton pour voir/modifier ses proprietes
( caption est le texte affiché)
- clic-clic-gauche permet de passer dans l'editeur VBA
- quand c'est fini
- repasser en mode execution (le petit triangle)
- corriger les erreurs !!!

RQ2.Pour completer ton fichier, dans le module où tu as mis le code de Myta, tu inseres le code

Sub CodeCouleur()
Dim c As Long
  c = Selection.Interior.ColorIndex
  MsgBox ("code couleur : " & c)
End Sub


puis Outils-Macros-Choisir CodeCouleur-Options et affecter un raccourci clavier (ctrl+k par exemple) a la macro

dans la feuille- selectionner une cellule colorée puis ctrl k pour avoir son code couleur

bonne suite
Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
811
Salut le forum

Tes couleurs proviennent-elles d'une mise en forme conditionnelle ?

Mytå
Bonjour,

Non car j'ai plusieurs paramètres à prendre en compte.
L'utilisateur peut saisir ce qu'il veut dans la cellule il choisi ensuite une couleur (sur 3 couleurs disponibles) qui lui permet de définir à quel problème correspond ce qu'il a mis dans la cellule.

Je vais ensuite faire 3 colonnes de résultats :
- une pour les cellules non vides vertes
- une pour les cellules non vides rouges
- une pour les cellules non vides grises.

Il m'est donc impossible de faire une mise en forme conditionnelle.
Bonjour,

Merci j'ai réussi à intégrer le module mais est ce que je dois intégrer l'index des couleurs quelque part ?

Car pour l'instant ca ne fonctionne pas
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Non il ne faut rien codifier du tout.
Une fois le code inséré dans un module, c'est Excel qui fais tout, tout seul. A toi de lui indiquer : la plage et l'indice correspondant à la couleur.
Ouvre le tableau des couleurs de Myta.
Si tu veux compter tes cellules noires : indice 1, ex : =NbreCellulesCouleur(A1:A10;1)
Si tu veux compter tes cellules "blanches" : indice 2, ex : =NbreCellulesCouleur(A1:A10;2)
Si tu veux compter tes cellules rouges : indice 3, ex : =NbreCellulesCouleur(A1:A10;3)
Ok???
Bon alors j'ai compris !
en fait le bouton me servait juste a identifier le code de ma couleur... ca c'est fait.

ca y est !!!! ca marche !! MERCI !!

Juste un truc mais c'est peut etre normal ... le calcul n'est pas instantané, il y a un petit temps entre le moment ou je mets la couleur et le moment ou ca le prend en compte dans le calcul.
c'est normal ?
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Oui, c'est tout à fait normal. Excel calcule automatiquement les formules sur ces feuilles toutes les ??? secondes. Pour lancer un recalcul manuellement (attention la procédure est complexe...) : appuyez sur F9...
Messages postés
3
Date d'inscription
jeudi 8 août 2013
Statut
Membre
Dernière intervention
4 août 2016

Bonjour,

Je m'intègre à votre conversation, longtemps après mais vous êtes de ceux ayant le mieux compris mon problème. Dans toute la mise en marche pour faire fonctionner les cellules car pour l'instant je n'ai que #NOM?. Par contre, la seule chose que je ne sais pas comment faire c'est ouvrir le tableau des couleurs de Myta. Ça doit être pas mal niais comme question, mais je ne la comprends tout simplement pas!

Merci de vos commentaires si possible...
Messages postés
9579
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2020
1 927
Pour créer un tableau des couleurs disponibles
https://www.cjoint.com/?3HjlKjEoPDB

Bonne journée
Bonjour,

En fait je disais "Merci j'ai réussi à intégrer le module mais est ce que je dois intégrer l'index des couleurs quelque part ?"
Car la formule est bien reconnue par Excel (je n'ai pas de message d'erreur) mais quelque soit la couleur que je mets il ne la prend pas en compte.

Donc je me disais que je devais peut etre rentrer la table des couleurs quelque part.

Peux tu m'aider ?
Messages postés
9579
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2020
1 927
bonjour

pour te faire une table des codes couleurs de la palette de ton systeme
tu mets un bouton dans une feuille et tu y affectes le code (excel 2003 chez moi permet 56 couleurs)

Private Sub CommandButton2_Click()
Dim i as long
  For i = 1 To 56
    Range("A" & i).Value = i
    Range("A" & i).Interior.ColorIndex = i
  Next i
End Sub


pour recuperer le code couleur d'une cellule (deja colorée) un autre bouton

Private Sub CommandButton1_Click()
Dim c As Long
  c = Selection.Interior.ColorIndex
  MsgBox ("code couleur : " & c)
End Sub


il ne te restera plus q'à continuer avec le code de Myta

bonne suite
Bonjour,

Merci mais la ca devient trop complexe pour moi ...
comment je fais pour intégrer un bouton ?

Et une fois que j'aurai coloré ma cellule comment je fais pour que le bouton que je crée récupère sa couleur ?
Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
811
Re le forum

Je vois que la cavalerie est débarquée :)

Pour facilité la tâche à Nanouz, la valeur pour la couleur est
récupérée depuis une cellule.

Function NbreCellulesCouleur(Plage As Range, Couleur As Range) As Long 
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée 
'Plage: plage de cellules à inspecter 
'Couleur: cellule de la couleur cherchée 

Application.Volatile 

Dim Cellule As Range 

For Each Cellule In Plage 
    If Cellule.Interior.ColorIndex = Couleur.Interior.ColorIndex And Not IsEmpty(Cellule) Then 
        NbreCellulesCouleur = NbreCellulesCouleur + 1 
    End If 
Next Cellule 

End Function 

Mode d'utilisation de la formule
=NbreCellulesCouleur(B4:B8;C3)

Nanouz : Car la formule est bien reconnue par Excel (je n'ai pas de message d'erreur) mais quelque soit la couleur que je mets il ne la prend pas en compte. 

Un changement de couleur de cellule ne relance pas la macro, il faut faire F9


Mytå
Merci de donner suite à votre question, nous ne sommes pas des robots...
L'urgent est fait, l'impossible est en cours et pour les miracles; prévoir un délai.
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
Bonjour,

C'est exactement ce que je veux mais il me marque #NOM?

Que dois-je faire ???
Merci à tous (toutes) vous êtes trop forts !!
Bonsoir tout le monde,


Je voudrais s'il vous plait savoir maintenant s'il y a un moyen de calculer les chiffres qui se trouve dans ces cases colorées.

Exemple: j'ai deux cases en rouge avec chacune le chiffre 5 et une case en jaune le chiffre 5 aussi

=nbcellcouleur(G9:I9;3) == me définit combien j'ai de cases en rouge, dans cet exemple c'est deux, mais je voudrais qu'elle me calcul aussi le chiffre, mais qui correspond à la couleur, dans cet exemple, il doit me retrouver 10 et non 15 s'il vous plait.

Merci beaucoup par avance.
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Bonjour,

Suffit d'additionner la valeur des cellules au lieu de les compter :

Function SommeCellulesCouleur(Plage As Range, Couleur As Range) As Long 
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée 
'Plage: plage de cellules à inspecter 
'Couleur: cellule de la couleur cherchée 

Application.Volatile 

Dim Cellule As Range 

For Each Cellule In Plage 
    If Cellule.Interior.ColorIndex = Couleur.Interior.ColorIndex And Not IsEmpty(Cellule) Then 
        SommeCellulesCouleur = SommeCellulesCouleur + Cellule.Value
    End If 
Next Cellule 

End Function


Et si tu veux un résultat décimal :

Function SommeCellulesCouleur(Plage As Range, Couleur As Range) As Double
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée 
'Plage: plage de cellules à inspecter 
'Couleur: cellule de la couleur cherchée 

Application.Volatile 

Dim Cellule As Range 

For Each Cellule In Plage 
    If Cellule.Interior.ColorIndex = Couleur.Interior.ColorIndex And Not IsEmpty(Cellule) Then 
        SommeCellulesCouleur = SommeCellulesCouleur + Cellule.Value
    End If 
Next Cellule 

End Function
Messages postés
1
Date d'inscription
mercredi 24 décembre 2014
Statut
Membre
Dernière intervention
24 décembre 2014
>
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020

Bonjour, je voudrais savoir comment je peut faire pour que la fonction soit instantanée c'est-a-dire que des que je rajoute une cellules avec une case rouge la fonction me recalcule le nombre de case rouge au total. et pour avoir plusieurs plage comment puis-je faire ?