Microsoft 365 nb . si couleur

LEPATOCHE

XLDnaute Occasionnel
Bonsoir a vous tous ;

j'ai mi ce code que j'ai trouver sur internet sur mon classeur 1 mais ca ne marche pas !
Function couleur(Cellule As Range)
Application.Volatile
couleur = Cellule.Interior.ColorIndex

End Function

le but c'est de savoir combien de fois la couleur jaune qui ce trouve dans A1 comme argument
donc le resultat sera de 10 car il faudrat me chercher tout les jaunes dans les colonnes de B a E
merci de votre aide attention pas de formule plutot du vba et apres je mettrai votre code vba dans un autre
classeur !

excusez moi j'ai du mal a m’exprimer !
 

LEPATOCHE

XLDnaute Occasionnel
rectification de mon classeur 1 dans les colonnes de B a E j'ai mis des mises en forme conditionnel
si non ma question est la même merci a vous tous ! prenez en compte ce nouveau fichier l'autre non !
 

Pièces jointes

  • Classeur1.xlsm
    15.8 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Lepatoche,
Cellule.Interior.Color donne la couleur de fond de la cellule mais pas la couleur de la MFC.
Dans votre cas vous pourriez essayer :
VB:
Function CompteCouleur(plage As Range, Valeur) As Integer
Application.Volatile
Dim r As Range, i As Integer
For Each r In plage
  If r.Value = Valeur Then i = i + 1
Next
CompteCouleur = i
End Function
Avec cette syntaxe : =CompteCouleur(B1:E7;A3)
Mais avec votre 365 vous devez avoir une version récente du VBA et tester DisplayFormat.Interior.Color.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Il y a une astuce pour utiliser DispalyFormat dans une fonction. Elle est décrite ICI.

Une application dans le fichier joint. Le code est dans module1 :
VB:
Option Explicit

Function CompteCouleur(plage As Range, cellCouleur As Range) As Integer
Dim refCoul, x, nbr&
   Application.Volatile
   refCoul = cellCouleur.Interior.Color
   For Each x In plage: nbr = nbr - (DFColor(x) = refCoul): Next
   CompteCouleur = nbr
End Function

Function DFColor(ByVal R As Range) As Double
   Application.Volatile
   DFColor = Evaluate("Helper(" & R.Address() & ")")
End Function

Private Function Helper(ByVal R As Range) As Double
   Helper = R.DisplayFormat.Interior.Color
End Function

nota 1 : chez moi, on peut mettre autant de Application.Volatile qu'on veut, un changement de couleur n'est pas détecté.

nota 2 : éviter les MFC sur des colonnes entières et les arguments de fonction avec des colonnes entières.
 

Pièces jointes

  • LEPATOCHE- nbr couleur MFC- v1.xlsm
    18 KB · Affichages: 4

Discussions similaires

Réponses
3
Affichages
285

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 179
dernier inscrit
BERSEB50