Bonjour Marion, Pascal, Creepy et JJM
J'avais dans un autre FIL récapitulé quelques éléments sur ces problèmes de couleur à partir de fonctions proposées par Binoute et Jean-Marie (je n'ai donc aucun mérite). Je te l'envoie ci-dessous:
1 - Pour compter les cellules d'une couleur dans une plage:
Function CCF(SearchArea As Object, BgColor As Byte) As Integer
Application.Volatile True
CCF = 0
For Each cell In SearchArea
If cell.Interior.ColorIndex = BgColor Then CCF = CCF + 1
Next cell
End Function
2 - Pour renvoyer une matrice de 0 et 1 en fonction de l'index couleur:
Function MCF(SearchArea As Range, BgColor As Byte) As Variant
Dim Matrice() As Byte
Dim cell As Range
Application.Volatile True
ReDim Matrice(SearchArea.Rows.Count - 1)
J = 0
For Each cell In SearchArea
Matrice(J) = IIf(cell.Interior.ColorIndex = BgColor, 1, 0)
J = J + 1
Next cell
MCF = Application.Transpose(Matrice)
End Function
Pour connaître l'index des couleurs:
2 méthodes:
* Autoenregistrer une macro en appliquant les couleurs souhaitées sur une ou plusieurs cellules puis récupérer dans la macro le code par exemple '.ColorIndex = 7'
Méthode développée dans ce forum
* Mettre une couleur quelconque dans une cellule (ex:B16)
* Se positionner sur la cellule située à sa droite
* Faire Insertion / nom / définir puis tapez 'Indcol' dans le champ Nom dans le classeur
* Dans le champ Fait référence à tapez: '=LIRE.CELLULE(38;!B16)'
* Validez
En tapant '=Indcol' dans n'importe quelle cellule du tableau, l'index couleur de la cellule située à sa gauche s'affichera.
ATTENTION: ces fonctions ne marchent pas pour des couleurs définies dans une mise en forme conditionnelle mais seulement si les couleurs sont appliquées dans le format de la cellule.
Dans le cas des MFC, il faut utiliser pour compter les cellules de couleur les mêmes conditions qui servent à appliquer ces couleurs.
@+
Gael