Comptage occurrence selon couleur et texte
Bonjour à tous.
Jusqu'à présent j'utilise Excel pour des fonctions très simples donc votre aide me sera d'un grand secours.
Après une première approche (merci à mon Forumeur) je souhaite aller plus loin dans l'automatisation des calculs.
A la base, un 1er classeur "planning" dont chaque feuille représente l'horaire hebdo d'une équipe.
Chaque semaine je détermine 2 postes de travail spécifiques avec une couleur.
Un 2 éme classeur avec 2 feuilles de poste qui comptabilisent nominativement par semaine le nombre de fois ou les membres de l’équipe ont effectué le ou les dits postes de travail.
Si j'ai obtenu la bonne fonction pour la sélection de la couleur de fond , et pour 1 nom de l'équipe (A6),
Comment mettre en forme la fonction pour tous les noms dans la colonne A
Function NbreCellPoste(Plage As Range, Couleur As Byte) As Long
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée
'= couleur est = au code colorIndex exmple 3 pour rouge
'fx tapez: =NbreCellDuty(A1:E5;3)
'B4:B8;3 (plage de selection);(code de colorIndex=rouge)
'"*" permert de ne pas tenir compte des anotations dans la cellule contenant le texte (Nom) de référence
Application.Volatile
Dim Cellule As Range
For Each Cellule In Plage
If Cellule.Interior.ColorIndex = Couleur And Not IsEmpty(Cellule) And Cellule.Value Like "*" & Range("A6") & "*" Then
NbreCellPoste = NbreCellPoste + 1
End If
Next Cellule
End FunctionCi-joint mon training pour plus de clarté .
Encore merci .
Bonjour,
C'est pour cette raison qu'on n'utilise jamais de valeur en "dur" dans une fonction, on doit le lui passer en argument. CelNom demande un Range donc une cellule et dans ton cas, les cellules en colonne A :
Function NbreCellPoste(Plage As Range, CelNom As Range, Couleur As Byte) As Long
'Compter le nombre de cellules d'une couleur donnée dans une plage donnée
'= couleur est = au code colorIndex exmple 3 pour rouge
'fx tapez: =NbreCellDuty(A1:E5;3)
'B4:B8;3 (plage de selection);(code de colorIndex=rouge)
'"*" permert de ne pas tenir compte des anotations dans la cellule contenant le texte (Nom) de référence
Application.Volatile
Dim Cellule As Range
For Each Cellule In Plage
If Cellule.Interior.ColorIndex = Couleur And Cellule <> "" And Cellule.Value Like "*" & CelNom.Value & "*" Then
NbreCellPoste = NbreCellPoste + 1
End If
Next Cellule
End FunctionLa formule devient =NbreCellPoste('0918'!$B$5:$H$17;$A4;3) en B4 de la feuille "Duty" à tirer vers le bas
Attention à l'orthographe, et surtout aux espaces parasites !
Grand, trés grand merci à toi Theze.
Commencer la journée avec le problème de résolu je commence mieux la semaine que je ne l'ai fini
Merci également à Amadéeus, avec qui j'ai échangé la semaine précédente et qui a plus qu'amorcer le début de solution.
Et merci à tous les forumeurs qui consacre de leur temps pour nous dépatouiller de nos formules.
sans aucun problème.
Bonne semaine à tous, en tout cas pour moi c'est le cas!