Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Compter les cellules avec polices spécifiques

didier09

XLDnaute Occasionnel
Bonsoir le forum ,

Je souhaite compter (Somme) les cellules avec une couleurs spécifique de police. Depuis un modèle de calendrier tout prêt j'essaie d'adapter. J'ai une erreur dans ma formule après la création d'une fonction récupéré sur la toile...
Voilà, merci à ceux qui prendront le temps de m'aider.

Didier
 

Pièces jointes

  • CalendrierPerpétuel.xlsm
    52.2 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Bonjour,
En français, c'est un point-virgule qui sépare les arguments, pas une virgule.
=CountCellsWithColor(C6:Y38 ; 1)

D'ailleurs la fonction devrait plutôt s'appeler CountCellsWithColorIndex() car Color et ColorIndex ce n'est pas du tout la même chose. Et si ColorIndex va de 1 à 56, il peut aussi avoir les valeurs xlNone (-4142) ou xlAutomatic (-4105) ce qui est le cas ici.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
En plus, bien que la plupart des MFC soit en #REF!, il y a une MFC qui passe sur les jours de weekend.
Et donc la fonction qui fait référence à cell.Font.colorIndex ne marchera pas car elle rendra le ColorIndex AVANT que la MFC ne la change.

Il faut utiliser cell.DisplayFormet.Font.colorIndex qui couvre tous les cas.

Met un raccourci sur cette macro et exécute-la pour voir ce qu'il en est de la cellule active (sélectionnée).
VB:
Sub a()
    With ActiveCell
        MsgBox .Font.colorIndex & " " & .Font.Color & vbCrLf & _
               .DisplayFormat.Font.colorIndex & " " & .DisplayFormat.Font.Color
    End With
End Sub
 
Dernière édition:

didier09

XLDnaute Occasionnel
Bonjour,

J'ai fait les essais. Le résultat me renvoi un #VALEUR!

Concernant le message de la box, j'ai le N° de couleur et un code. Pour les polices noires j'obtiens le même message, pour les polices colorées il est différent...
Ce code correspond à l'indice de couleur vrai que je dois mettre en argument après le ; ?

Merci de ton retour.
Didier
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Alors je découvre avec toi que l'utilisation de DisplayFormat dans une fonction personnalisée génère une erreur 1004 alors que ça fonctionne dans un Sub standard. C'est effectivement indiqué dans la doc Microsoft.
Et la doc de conclure:
Par conséquent, si la mise en forme conditionnelle est appliquée à une plage, il n’existe aucun moyen de retourner cette valeur avec une fonction définie par l’utilisateur.

Entre la problématique des valeurs de ColorIndex (xlNone, xlAutomatic) et l'impossibilité d'utiliser DisplayFormat dans une fonction personnalisée, je crains que ton problème n'ait pas de solution.
 

Pièces jointes

  • CalendrierPerpétuel.xlsm
    58.3 KB · Affichages: 6

Dudu2

XLDnaute Barbatruc
A supposer que tu utilises .Color au lieu de .ColorIndex pour contourner le problèmes des valeurs xlNone et xlAutomatic, la seule solution pour tenir compte de la MFC serait d'exécuter une macro à l'activation de la feuille ou de créer un ou des boutons pour faire ce(s) calcul(s) qui pourrai(en)t alors utiliser DisplayFormat.

Edit: Ou alors tu vires la MFC et colorise les Samedis, Dimanches et Lundis par macro à l'activation de la feuille (évènement Worksheet_Activate())
 
Dernière édition:

didier09

XLDnaute Occasionnel
Bonjour,

La formule me renvoi un #VALEUR!

Concernant le message, les lignes sont différentes en fonction des couleurs. Identiques si noires et


Merci de ton retour Dudu2. Je vais essayer de virer les MFC et mettre un bouton pour voir si cela peut le faire.
Je reviendrais sur le fil si je rencontre une difficulté...

Bonne soirée et bonnes fêtes de fin d'année
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…