J'ai pas mal cherché sur le forum (et ailleurs), mais je n'ai pas trouvé la solution pour moi... pourtant le sujet est souvent évoqué.
J'ai fait un planning, je positionne avec des couleurs en fonction de si les gens sont en vacances, formation,... bref un code couleur qui va bien.
Je veux compter les couleurs pour compter le nombre de congés, de formations, ...
J'utilise cette fonction :
Code:
Function SomCouleur(Zne As Range, CaseRef As Range) As Integer
Dim CouleurInterieure As String
Application.Volatile True
SomCouleur = 0
CouleurInterieure = CaseRef.Interior.ColorIndex
For Each cell In Zne
If cell.Interior.ColorIndex = CouleurInterieure Then SomCouleur = SomCouleur + 1
Next cell
End Function
Zne est la plage de cellules où je veux compter les couleurs
CaseRef est une cellule qui contient la couleur que je veux compte (sur un légende)
ça fonctionne quand ça veut... et à priori seulement quand je fais F9
J'ajoute que cette fonction est mise dans un module.
Vos idées seront les bienvenues, car là je galère un peu.
Le but est que lorsqu'on colorie une case dans Zne, la fonction calcule automatiquement.
peut etre à regarder dans les options d'excel si le mode de calcul n'est pas sur ordre uniquement, ( a voir dans les options pour le mettre en automatique.
Pour Nyko, je viens de vérifier, et je suis en "workbook calculation - Automatic" (désolé, excel in english)
Pour Chrys, j'avais déjà mis "pplication.Volatile", mais pas en 1ère ligne, mais le résultat est le même
Pour Dull, j'ai mis le code dans la page, ça va mieux mais c'est très curieux...
Je m'explique, j'ai donc une macro qui mettent la couleur en cliquand sur un bouton, et une autre qui l'efface
Ma macro pour effacer :
Code:
[FONT=Courier New]Sub EFFACER(ByVal control As IRibbonControl)[/FONT]
[FONT=Courier New]Selection.Interior.ColorIndex = xlNone
Selection.ClearContents
End Sub[/FONT]
Ma macro pour colorier : Sub A2(ByVal control As IRibbonControl)
CouleurCase = Sheets("Legende").Range("A2").Offset(0, 1).Value
With Selection.Interior
.ColorIndex = CouleurCase
.Pattern = xlSolid
End With
Application.CutCopyMode = False
End Sub
Pour expliquer la couleur, j'ai un onglet légende, avec colonne A mes couleurs (pour que ça soit bien visuel pour moi), et colonne B l'index couleur excel correspondant.
Le pb que j'ai maintenant avec le code de Dull, j'ai un compteur qui compte les cases vide, et un qui compte 1 couleur (ex : le rouge). Quand j'ajoute une couleur, même du rouge dans la zone à regarder, rien ne se passe... si j'efface 1 couleur, les 2 compteurs s'actualisent... donc en fait, ça ne marche que si j'enlève une couleur, pas quand j'en ajoute