Signaler

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

Posez votre question nanouz - Dernière réponse le 10 mars 2017 à 10:35 par cc
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 ?
Afficher la suite 
Utile
+24
plus moins
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å
Cette réponse vous a-t-elle aidé ?  
ccm81 7902Messages postés lundi 18 octobre 2010Date d'inscription 22 juillet 2017 Dernière intervention - 9 mai 2016 à 17:00
Peux tu envoyer la partie concernée de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans http://cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".

Cdlmnt
Tri- 13 févr. 2015 à 21:56
Je viens de comprendre! Désolé My Bad!
Steve- 13 mai 2015 à 11:50
Cela s'aplik t'il si la mise en forme est conditionelle?
Mytå 2997Messages postés mardi 20 janvier 2009Date d'inscription ContributeurStatut 20 décembre 2016 Dernière intervention - 13 mai 2015 à 16:35
Salut le Forum

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

Mytå
cc- 10 mars 2017 à 10:35
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 !
Répondre
Utile
+5
plus moins
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
Utile
+0
plus moins
Salut le forum

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

Mytå
Utile
+0
plus moins
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.
Utile
+0
plus moins
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
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 9 mars 2017 Dernière intervention - 31 janv. 2011 à 11:59
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???
nanouz- 31 janv. 2011 à 12:11
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 ?
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 9 mars 2017 Dernière intervention - 31 janv. 2011 à 12:32
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...
MissJulia 3Messages postés jeudi 8 août 2013Date d'inscription 4 août 2016 Dernière intervention - 8 août 2013 à 17:59
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...
ccm81 7902Messages postés lundi 18 octobre 2010Date d'inscription 22 juillet 2017 Dernière intervention - 9 août 2013 à 11:44
Pour créer un tableau des couleurs disponibles
http://cjoint.com/?3HjlKjEoPDB

Bonne journée
Utile
+0
plus moins
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 ?
Utile
+0
plus moins
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
Utile
+0
plus moins
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 ?
Utile
+0
plus moins
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)]
cyrille- 26 août 2011 à 14:31
Bonjour,

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

Que dois-je faire ???
Utile
+0
plus moins
Merci à tous (toutes) vous êtes trop forts !!
Utile
+0
plus moins
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.
pijaku 12170Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 9 mars 2017 Dernière intervention - 20 déc. 2014 à 10:50
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
arda1 1Messages postés mercredi 24 décembre 2014Date d'inscription 24 décembre 2014 Dernière intervention - 24 déc. 2014 à 10:26
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 ?

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !