Bonjour,
Afin d'effectuer un planning, je voudrais compter en vba les cellules par couleurs de fond.
Visuellement, c'est plus pratique que des données.
Merci pour vos réponses,
cdlt, franky7.
Bonjour,
Afin d'effectuer un planning, je voudrais compter en vba les cellules par couleurs de fond.
Visuellement, c'est plus pratique que des données.
Merci pour vos réponses,
cdlt, franky7.
Bonjour,
c'est tout à fait possible, cependant combien as tu de couleurs de fond différentes?
Tiens sinon un test:
et la meme chose en PJ
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
16 Public Sub ComptColor() Dim color As Long Dim number As Long color = 255 'long qui équivaut au rouge For Each cel In Range("A1:A100") If cel.Interior.color = 255 Then 'si la cellule est rouge alors on incrément number = number + 1 End If Next cel MsgBox number 'affiche le nombre de cellule rouge End Sub
Salut,
Tu peux faire avec un If ou select case, en créant une variable qui contiendra tes couleurs de fond :
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
16
17 Sub test() Dim strgCoulFond As String Dim intLine As Integer Dim intColumn As Integer For intLine = 1 To 20 For intColumn = 1 To 20 Cells(intLine, intColumn).Select With Selection.Interior If .Color = 16777215 Then MsgBox "couleur blanche" End If MsgBox .Color End With Next intColumn Next intLine End Sub
tiens voici une fonction personnalisé à mettre dans un module , en 1° paramètre la plage à tester et en 2° une cellule de la couleur de fond à tester ..:
le problème de cette fonction est que le changement d'une couleur ne lance pas un re-calcul de la feuille et donc le résultat n'est pas mis à jour il faut attendre le prochain re-calcul (action sur F9 , saisie/modification d'une valeur..)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Function CompteCouleur(plage As Range, CouleurReference As Range) As Integer Application.Volatile Dim r As Range Dim i As Integer For Each r In plage If r.Interior.Color = CouleurReference.Interior.Color Then i = i + 1 Next CompteCouleur = i End Function
exemple d'utilisation à placer en F34, pour compter les cellules de la plage F19:F33 qui sont de la même couleur de fond que la cellule F34:
=CompteCouleur(F19:F33;F34)
Et voici ce que j'ai trouvé avec un select case
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
16
17
18
19
20
21
22
23 Sub test() Dim strgCoulFond As String Dim intLine As Integer Dim intColumn As Integer For intLine = 1 To 20 For intColumn = 1 To 20 Cells(intLine, intColumn).Select With Selection.Interior Coul = .Color Select Case Coul Case 16777215 MsgBox "couleur blanche" Case 255 MsgBox "couleur rouge" Case Else MsgBox "couleur differente du blanc et du rouge (serait-ce un rosé de provence ?)" End Select MsgBox .Color End With Next intColumn Next intLine End Sub
Pas mal bbil de mettre une couleur de référence en tant que cellule moi je travaillais toujours avec les codes long sa fait des bonnes conversions
Salut BBIL !
C'est quoi la signification de la ligne "application.volatile" ?
C'est une appli avec des plumes ou bien ?
Partager