Microsoft 365 nb . si couleur

  • Initiateur de la discussion Initiateur de la discussion LEPATOCHE
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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.
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
19
Affichages
901
Réponses
2
Affichages
153
Retour