Bonjour.
Le but de la fonction suivante est de compter le nombre de cellules ayant le fond d'une certaine couleur (dans une zone définie).
Utilisation dans Excel :
=NBCOULEURS($B$3:$B$19;D4) . Dans ce cas on recherche dans $B$3:$B$19 les cellules ayant une couleur de fond identique à D4.
ou
=NBCOULEURS($B$3:$B$19) . Dans ce cas on recherche dans $B$3:$B$19 les cellules ayant une couleur de fond identique à la cellule où est saisie la formule.
Note :
En utilisant la version 1 du code (qui ne figure pas ici) "NBCOULEURS($B$3:$B$19;D4)" avec le 2ème paramètre permanent ça fonctionne.
Problème
En passant le paramètre en optionnel j'ai systématiquement une erreur sur la ligne "If IsArray(..." du type "Argument non facultatif" (et la cellule Excel indique "#Valeur").
Avez-vous une idée concernant l'origine du problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Function NBCOULEURS2(ZoneCible As Range, Optional CelRef As Range) As Long Application.Volatile ' force le reclacul automatique Dim Element ' élément dans la zone cible Dim NbOccur As Integer ' nombre d'occurences de la couleur dans la zone cible Dim CouleurSource As Integer ' code de la couleur à rechercher Dim ZoneRef As Range ' zone avec la couleur de référence NbOccur = 0 If IsArray(CelRef) Then ZoneRef = ActiveCell.Range Else ZoneRef = CelRef CouleurSource = ZoneRef.Interior.ColorIndex For Each Element In ZoneCible If Element.Interior.ColorIndex = CouleurSource Then NbOccur = NbOccur + 1 Next NBCOULEURS2 = NbOccur End Function
Partager