Comptabiliser les cellules colorées

Bonjour

j'ai parcouru de nombreux sujets sur mon problème mais je ne vois aps comment l'adapter a ma situation:

dans la colonne I --> ca compte le nombre de Cellule avec un texte

dans la colonne H --> ca compte le nombre de couleur verte (jusque là tout va bien)

problème quand je colore une autre cellule en vert ca ne prend pas en compte dans la formule de a=la colonne H

j'utilise cette VBA

Function NbColor(ByRef Plage As Range, Couleur As Byte) As Long
    Dim c As Range
    Dim nb As Long
    nb = 0
    For Each c In Plage
        If c.Interior.ColorIndex = Couleur Then
            nb = nb + 1
        End If
    Next c
    NbColor = nb
End Function

Function NbColorSameAs(ByRef Plage As Range, ByRef Cellule As Range) As Long
    NbColorSameAs = NbColor(Plage, Cellule.Interior.ColorIndex)
End Function

y a t il un moyen pour que la formule : =NbColorSameAs($K6:$CB6;$B$13) se mette à jour dès qu'une couleur est changées dans la cellule ???? (j'ai essayer F9 mais ca ne fait rien)

Merci à tous

38test-couleur.xlsm (30.53 Ko)

Bonjour,

Place cette macro dans la feuille concernée

à chaque changement et après sélection d'une autre cellule le calcul se fera

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

Bonjour

je vous remercie pour cette réponse, j'ai essayé dans le fichier ci joint mais je dois avoir un souci cela ne fonctionne pas :/

32test-couleur.xlsm (31.54 Ko)

encore merci d'avance

Re,

Bizarre, chez moi cela fonctionne

30test-couleur-1.xlsm (31.00 Ko)

effectivement je viens de réessayer sur mon fichier joint et ca marche mais quand je transcrit les macro sur mon fichier réel (un fichier Excel du boulot avec plusieurs onglets) cela ne fonctionne pas

Re,

Regarde si ton classeur n'est pas en calcul manuel

non c'est bien en automatique :(

Re,

Au pire, revalide tes cellules contenant la formule de calcul des couleurs

Tu valides bien la formule avec CTRL + SHIFT + ENTREE ?

quand je clique sur la case comportant la formule suivante =NbColorSameAs($K11:$CB11;$B$2) ca se met à jour, mais vu que je souhaite par la suite masquer cette colonne ca ne m'avance a rien si dès qu'on change la couleur il faut ensuite tirer la formule ou cliquer sur case concerner par la formule.

Bonjour,

Peut-être qu'en rajoutant la propriété volatile pour qu'elle se mette à jour au recalcul de la feuille, ça marchera.

Function NbColor(ByRef Plage As Range, byref rcompare as range) As Long
application.volatile
Couleur = rcompare(1).displayformat.interior.color
For Each c In Plage
    If c.displayformat.Interior.Color = Couleur Then NbColor = NbColor + 1
Next c
End Function

Cdlt,

est ce que je remplace lma VBA actuelle par la tienne? si c'est le cas ca ne fonctionne pas ^^"

Oui, c'est le displayformat qui n'est pas accepté dans les fonctions apparemment...

Function NbColor(ByRef Plage As Range, byref rcompare as range) As Long
application.volatile
Couleur = rcompare(1).interior.color
For Each c In Plage
    If c.Interior.Color = Couleur Then NbColor = NbColor + 1
Next c
End Function

Comme ça ça marche mais ça nécessite toujours un recalcul de la feuille pour obtenir le résultat à jour.

Cdlt,

Bonjour

alors je viens d'essayer ca ne fonctionne pas, n'y a t il aucun moyen d'actualiser automatiquement la formule de calcul du nombre de case coloré? faut que je tire la formule sur toute la colonne a chaque modif?

Bonjour,

Chez moi ça fonctionne en tout cas. Comme il y a eu ce problème avec la propriété displayformat, j'ai fait un essai. Il faut mettre en premier argument la plage à calculer et en second une cellule de la même couleur :

=NbColor(C1:C10;A1)

La fonction renverra le nombre de cellules en C1:C10 ayant la même couleur que A1.

Je précise que le code est à placer dans un module normal.

Non, ce n'est pas possible de rendre le recalcul automatique car il s'agit des couleurs (propriété secondaire non gérée par un évènement). Ce serait comme faire la somme des cellules en italique ou avec une bourdure inéférieure.

Le meilleur moyen, comme le suggérait M12 reste de déclencher le calcul à chaque changement de sélection en supposant qu'après avoir changé la couleur d'une cellule vous irez en sélectionner une autre :

private sub worksheet_selectionchange(byval target as range)
application.calculate
end sub

Code à placer dans le module de la feuille concernée.

Je n'ai pas compris pour la tirage à chaque modif. La fonction se comporte comme une fonction normale, mis à part le problème de calcul. Il faut juste, une fois la macro évènementielle rajoutée, veiller à valider par entrée ou tab à chaque modif de couleur, c'est tout.

Cdlt,

Bonjour

effectivement je viens de tester ca fonctionne mais ce qui reste étrange c'est que une fois le fichier fermé quand je le rouvre pour montrer aux collègues la marche a suivre cela ne fonctionne plus ^^"

Bonjour,

Il faut activer les macros peut-être et surtout enregistrer le fichier au format xlsm...

c'est fait mon fichier est actif en macro pour ca que je ne comprends pas

Rechercher des sujets similaires à "comptabiliser colorees"