Compter le nombre de cellules ayant une couleur

Ethinil

XLDnaute Nouveau
Bonjour!

Je sais qu'il est possible de rechercher des cellules correspondant à un format mais bon, c'est un bête ctrl+f, je vais pas aller loin avec ça, je vois pas trop comment les compter.

Alors je me demandais s'il n'y avait pas une formule magique dans excel pour compter des cellules ayant la même couleur en arrière-plan/fond.
Au pire, je suppose que c'est faisable en VBA, mais j'aimerais m'en passer (mais je suis preneur quand même si c'est la seule solution :) )

Je joins un super fichier excel très complexe :D , avec 2 cellules orange, 3 vertes, et 1 rouge.
Le but c'est donc d'avoir une cellule qui me dit "orange = 2" par exemple.

;)
 

Pièces jointes

  • couleurs.xls
    13.5 KB · Affichages: 266
  • couleurs.xls
    13.5 KB · Affichages: 268
  • couleurs.xls
    13.5 KB · Affichages: 269

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

Salut!

Merci de ta réponse si rapide!
Comment je fais pour visualiser la fonction dans vba?
Histoire que je pige un peu le principe.

Et sinon, c'est possible QU'avec vba, pas autrement? :confused:
 

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

mmmh... ok ^^

Et y a-t-il un moyen que la macro s'active dés qu'on change la couleur qu'on cherche?
parce que là faut chaque fois la valider avec ENTER, et je suis plus pour le full auto-dynamique que les utilisateurs n'aient pas à y penser (car ils n'en pensent jamais, les vils coquins :D)
 

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

F9 fonctionne, mais bon, ça ou appuyer sur ENTER c'est tout de même pareil, si l'user y pense pas, caca.

Mais quand tu parles de valeur de la cellule, y a pas réellement de valeur, c'est juste la couleur de fond, on est bien d'accord?
Et j'ai beau changer la couleur de la cellule-échantillon, ça ne se met pas à jour automatiquement, promis juré ^^'
Faudrait détecter le changement de couleur...
J'ai excel 2003, ça change ptet quelque chose?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Compter le nombre de cellules ayant une couleur

re

tu peux rajouter cela dans le code de ta feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

mais il ne faut pas qu'il y est trop de formule dans ton classeur car là tu relances le calcul à chaque modif de selection
 

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

:D
Ca change bien dés qu'on fait quelque chose...
Sauf quand on change la couleur d'une cellule uniquement :D
Apparemment c'est pas réellement une action de faire de la mise en forme...
:/
 

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

mmh... et juste le simple fait de cliquer qque part avec la souris, genre, je change la couleur de ma cellule, puis je clique n'importe ou?
Détecter le clic souris ça doit être faisable en VBA non :confused: ?
 

Ethinil

XLDnaute Nouveau
Re : Compter le nombre de cellules ayant une couleur

heuumm... j'ai ceci donc au final :
Code:
Function sommecouleur(MaPlage As Range, MaCellRef As Range)

Dim c As Range
Dim montotal As Double
Application.Volatile True
For Each c In MaPlage
    If c.Interior.ColorIndex = MaCellRef.Interior.ColorIndex Then
    montotal = montotal + 1
    End If
    
Next

sommecouleur = montotal

End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

Et quand je clique ailleurs rien ne se passe, c'est uniquement quand je met un chiffre quelque part qu'il se passe quelque chose.
 
Dernière édition:

FanExcel

XLDnaute Occasionnel
Re : Compter le nombre de cellules ayant une couleur

Bonjour Pascal, bonjour à tout le forum.

J'ai utilisé ton code dans un de mes petits outils. C'est super !
Comment puis je modifier la macro si je souhaite tester la couleur de la police?

MaCellRef.Interior.ColorIndex
Est ce cela que je dois modifier? :confused:

Function sommecouleur(MaPlage As Range, MaCellRef As Range)

Dim c As Range
Dim montotal As Double
Application.Volatile True
For Each c In MaPlage
If c.Interior.ColorIndex = MaCellRef.Interior.ColorIndex Then
montotal = montotal + 1
End If

Next

sommecouleur = montotal

End Function

D'avance merci beaucoup:):)
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa