XL 2013 Compter par couleur via une formule

lestatber

XLDnaute Nouveau
Connaisser vous un formule pour compter par couleur ?

1629734663232.png

ex - janvier 2022 5 000 (vert)
- janvier 2022 10 000 (rouge)

Bien à vous,
Matthieu
 

Pièces jointes

  • 1629734476101.png
    1629734476101.png
    27.3 KB · Affichages: 25
Solution
Bonjour,
Tu peux aussi définir une fonction personnalisée en VBA:
VB:
Function CompteCouleur(Rng As Range, Couleur As Long) As Long
    Dim Cel As Range
    Dim Compte As Long
 
    For Each Cel In Intersect(Rng.Parent.UsedRange, Rng).Cells
        If Cel.DisplayFormat.Interior.Color = Couleur Then Compte = Compte + 1
    Next Cel
 
    CompteCouleur = Compte
End Function

Y faire référence dans une cellule de total: =CompteCouleur(A10:B24;65535)

A condition évidemment de connaître la valeur de la couleur à compter, ce que permet cette petit macro qui affiche la valeur de la couleur de la cellule sélectionnée.
Code:
Sub Couleur()
    MsgBox ActiveCell.DisplayFormat.Interior.Color
End Sub

Dudu2

XLDnaute Barbatruc
Bonjour,
Tu peux aussi définir une fonction personnalisée en VBA:
VB:
Function CompteCouleur(Rng As Range, Couleur As Long) As Long
    Dim Cel As Range
    Dim Compte As Long
 
    For Each Cel In Intersect(Rng.Parent.UsedRange, Rng).Cells
        If Cel.DisplayFormat.Interior.Color = Couleur Then Compte = Compte + 1
    Next Cel
 
    CompteCouleur = Compte
End Function

Y faire référence dans une cellule de total: =CompteCouleur(A10:B24;65535)

A condition évidemment de connaître la valeur de la couleur à compter, ce que permet cette petit macro qui affiche la valeur de la couleur de la cellule sélectionnée.
Code:
Sub Couleur()
    MsgBox ActiveCell.DisplayFormat.Interior.Color
End Sub
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Il y a cependant une limitation subtile...
Si ces couleurs sont issues de MFC et que des contenus de cellules qui conditionnent la MFC ne sont pas dans le Range passé en argument de la fonction, une modif de ces cellules-hors-Range modifant donc le nombre de cellules colorées, ne provoquera pas de recomptage des couleurs avant un recalcul de la feuille.

Si c'est un problème, et je ne vois pas comment un complément XLP pourrait y échapper, cela est au moins parfaitement contrôlable dans la fonction personnalisée mais il faut en savoir plus sur les éventuelles MFC concernées.
 
Dernière édition:

lestatber

XLDnaute Nouveau
Merci pour vos réponses
Il y a cependant une limitation subtile...
Si ces couleurs sont issues de MFC et que des contenus de cellules qui conditionnent la MFC ne sont pas dans le Range passé en argument de la fonction, une modif de ces cellules-hors-Range modifant donc le nombre de cellules colorées, ne provoquera pas de recomptage des couleurs avant un recalcul de la feuille.

Si c'est un problème, et je ne vois pas comment un complément XLP pourrait y échapper, cela est au moins parfaitement contrôlable dans la fonction personnalisée mais il faut en savoir plus sur les éventuelles MFC concernées.
Merci
 

Wayki

XLDnaute Impliqué
Il y a cependant une limitation subtile...
Si ces couleurs sont issues de MFC et que des contenus de cellules qui conditionnent la MFC ne sont pas dans le Range passé en argument de la fonction, une modif de ces cellules-hors-Range modifant donc le nombre de cellules colorées, ne provoquera pas de recomptage des couleurs avant un recalcul de la feuille.

Si c'est un problème, et je ne vois pas comment un complément XLP pourrait y échapper, cela est au moins parfaitement contrôlable dans la fonction personnalisée mais il faut en savoir plus sur les éventuelles MFC concernées.
Jamais eu de soucis avec le complément XLP et les couleurs obtenues via MFC...
Après je n'ai peut être jamais poussé le complément dans ses retranchements.
 

Dudu2

XLDnaute Barbatruc
Je pense que ces compléments sont des fonctions personnalisées.
Excel recalcule automatiquement les fonctions personnalisées dès lors que la modification dans la feuille fait partie du ou des Ranges passés en argument(s). Excel les "voit".
Mais si le résultat de la fonction personnalisée dépend d'un autre Range (cellule ou plage) qu'il ne "voit" pas dans les arguments, il ne l'appellera évidemment pas pour faire le recalcul si c'est ce Range "invisible" qui est modifié.
La solution consiste alors à passer aussi ce Range en argument pour qu'Excel le "voit" même s'il n'est d'aucune utilité pour la fonction.
En l'occurrence, la MFC s'applique à une plage qui fera l'objet du compte, plage qui sera donc passée en argument. Mais peut-être que la MFC dépend d'une valeur (de comparaison dans une cellule par exemple) autre qui n'est pas dans ce Range. Mais ça on ne sait pas tant qu'on n'a pas de visibilité sur les MFC.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 774
Membres
101 816
dernier inscrit
Jfrcs