Macro somme cellules de couleur

Fermé
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016
- 7 janv. 2016 à 18:35
maxmen67
Messages postés
56
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
18 juillet 2019
- 11 janv. 2016 à 13:37
Bonjour,

je dois faire un tableau excel je pense que je dois utiliser la fonction macro (je ne m'y connais pas trop),

dans les cellules entre D3 et AH114 il y aura que des cellules en couleurs (rouge, bleu, jaune, violet, rose). chaque fin de ligne et colonne j'aimerai avoir le nombre de cellules en rouge, bleu, jaune, violet, rose.

Est ce que quelqu'un aurait une solution pour moi svp.

merci

2 réponses

f894009
Messages postés
16703
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 septembre 2022
1 654
7 janv. 2016 à 18:51
Bonjour
Ces couleurs proviennent d'une mise en forme conditionnelle ou pas ???
0
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

7 janv. 2016 à 18:53
Justement sur différent forum j'ai vu cette mise en forme, mais je ne sais pas du tout ce que c'est (pourtant je pensais "maitriser excel).

C'est moi qui fait mettre les couleurs dans les cellules manuellement.
0
f894009
Messages postés
16703
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 septembre 2022
1 654 > Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

Modifié par f894009 le 8/01/2016 à 07:29
Bonjour,

Vu le nombre de cellules (pas loin de 3800), il faut utiliser les mise en forme conditionnelle (MFC) pour les couleurs et ensuite suivant la complexite des tests faire:
soit des formules
soit du code VBA
pour compter les cellules par couleur par ligne

A vous de nous en dire un peu plus
0
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016
> f894009
Messages postés
16703
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 septembre 2022

8 janv. 2016 à 09:20
Bonjour,

Merci, mais je crois que je ne peux pas utiliser la mise en forme conditionnelle car mon tableau concerne un planning pour des enfants, les cases sont vides, il y a juste de la couleur (soit ils sont dans leur famille couleur verte, soit en colo jaune, et d'autres cas en tout j'ai 6 couleurs) ; je peux donc mettre la couleur uniquement manuellement.

Pour chaque semaine, chaque mois,chaque enfants ça change.

Vu qu'il y a moins de cellules (plage D3:AH60) est ce que je ne peux pas uniquement utiliser les codes VBA ?

merci pour vos réponses ;)
0
f894009
Messages postés
16703
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 septembre 2022
1 654 > Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

8 janv. 2016 à 11:21
Re,

un fichier modele microsoft sans VBA qui est assez facile a modifer

https://www.cjoint.com/c/FAikuX0hcNf

A+
0
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

8 janv. 2016 à 15:47
Merci pour ton aide, mais j'ai utilisé pour le moment la facon de maxmen67 même si j'ai réussi uniquement pour la 1ere ligne... (j'en ai 60)...
merci:)
0
maxmen67
Messages postés
56
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
18 juillet 2019
1
8 janv. 2016 à 11:04
Bonjour;

Faire un clic droit sur l'onglet de la feuille qui contient le tableau puis cliquer sur "visualiser le code" puis coller le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Comptage des couleurs en ligne

Dim CompterCellules As Integer, iCell, PlageTest
Set PlageTest = Range("D3:AH3")

'compteur pour cellules rouges

Application.ScreenUpdating = False
For Each iCell In PlageTest
If iCell.Interior.ColorIndex = 3 Then
CompterCellules = CompterCellules + 1
End If
Next iCell
Range("AJ3") = CompterCellules

'compteur pour cellules jaunes

For Each iCell In PlageTest
If iCell.Interior.ColorIndex = 6 Then
CompterCellules1 = CompterCellules1 + 1
End If
Next iCell
Range("AI3") = CompterCellules1


'compteur pour cellules bleues

For Each iCell In PlageTest
If iCell.Interior.ColorIndex = 33 Then
CompterCellules2 = CompterCellules2 + 1
End If
Next iCell
Range("AK3") = CompterCellules2

'compteur pour cellules violettes

For Each iCell In PlageTest
If iCell.Interior.ColorIndex = 13 Then
CompterCellules3 = CompterCellules3 + 1
End If
Next iCell
Range("AL3") = CompterCellules3

'compteur pour cellules roses

For Each iCell In PlageTest
If iCell.Interior.ColorIndex = 7 Then
CompterCellules4 = CompterCellules4 + 1
End If
Next iCell
Range("AM3") = CompterCellules4


'comptage cellules en colonnes

Dim CompterCol As Integer, iCelll, Testplage
Set Testplage = Range("D3:D63")

'compteur pour cellules rouges

Application.ScreenUpdating = False
For Each iCelll In Testplage
If iCelll.Interior.ColorIndex = 3 Then
CompterCol = CompterCol + 1
End If
Next iCelll
Range("D65") = CompterCol

'compteur pour cellules jaunes

Application.ScreenUpdating = False
For Each iCelll In Testplage
If iCelll.Interior.ColorIndex = 6 Then
CompterCol1 = CompterCol1 + 1
End If
Next iCelll
Range("D64") = CompterCol1


'compteur pour cellules bleues

Application.ScreenUpdating = False
For Each iCelll In Testplage
If iCelll.Interior.ColorIndex = 33 Then
CompterCol2 = CompterCol2 + 1
End If
Next iCelll
Range("D66") = CompterCol2

'compteur pour cellules violettes

Application.ScreenUpdating = False
For Each iCelll In Testplage
If iCelll.Interior.ColorIndex = 13 Then
CompterCol3 = CompterCol3 + 1
End If
Next iCelll
Range("D67") = CompterCol3

'compteur pour cellules roses

Application.ScreenUpdating = False
For Each iCelll In Testplage
If iCelll.Interior.ColorIndex = 7 Then
CompterCol4 = CompterCol4 + 1
End If
Next iCelll
Range("D68") = CompterCol4

End Sub


cordialement
0
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

8 janv. 2016 à 15:46
Bonjours
Merci pour ton aide, dans mon tableau j'ai réussi à utiliser ta facon, mais par contre j'y arrive uniquement pour la premiere ligne du tableau numéro 3 mais je n'y arrive pas pour la ligne 4. J'ai essayer de le mettre directement à la liste mais pas possible ni en copiant deux fois les codes....

Cordialement
0
maxmen67
Messages postés
56
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
18 juillet 2019
1
11 janv. 2016 à 10:08
Salut;

Désolé pour le temps de réponse...

Le week-end est passé par là !

Pour faire les autres lignes et colonnes, il faut recopier le code et changer certaines données telles que:

l'adresse des cellules à compter
et incrémenter les variables ("comptercellules","icell","plagetest") pour pas qu'il y'ai d'erreur dans le comptage.

voir code ci-dessous:


'Comptage des couleurs en ligne 2 ------------------_-_-_
Dim CompterCellules11 As Integer, iCell11, PlageTest1
Set PlageTest1 = Range("D4:AH4")

'compteur pour cellules rouges ---------------------------------------------------

Application.ScreenUpdating = False
For Each iCell11 In PlageTest1
If iCell11.Interior.ColorIndex = 3 Then
CompterCellules11 = CompterCellules11 + 1
End If
Next iCell11
Range("AJ4") = CompterCellules11



Voici un lien vers un fichier exemple que j'ai fais:

https://www.cjoint.com/c/FAljgfs3knq
0
Cyrielle70
Messages postés
9
Date d'inscription
jeudi 7 janvier 2016
Statut
Membre
Dernière intervention
1 février 2016

11 janv. 2016 à 13:31
super merci beaucoup c'est top :)
0
maxmen67
Messages postés
56
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
18 juillet 2019
1
11 janv. 2016 à 13:37
J'ai refait un fichier dans lequel j'explique en détail les étapes dans ALT+F11

https://www.cjoint.com/c/FAlmKp5EvKq
0