Comment calculer le nb de cellules selon fonction + critère

Bonjour,

Je mets en place un tableau de vacs pour mes collègues. Ces derniers ont qu'à colorer les dates correspondant à leurs jours d'absence selon la bonne couleur.

Dans la colonne B, j'ai fait plusieurs calculs.

Exple:

B10 = nb jours reportés de 2011

B11 = nb jours reportés + nb de jours autorisés pour 2012

B12 = nb jours de vacances pris en 2012

B13 = nb jours restants à prendre pour 2012

Mon problème vient du calcul pour B12.

J'ai réussi grâce à divers sites à créer une fonction qui calcule le nombre de jours/cellules coloriés en bordeaux:

' Fonction pour compter le nombre de cellule d'une couleur particulière

Function nbcouleur(plage As Range, couleur As Variant) As Double

Application.Volatile True

Dim cellule As Range, NB As Long

Application.Volatile True

NB = 0

For Each cellule In plage

If couleur = "bordeau" Then couleur = 52

If cellule.Interior.ColorIndex = couleur Then

NB = NB + 1

End If

Next cellule

nbcouleur = NB

End Function

MAIS! j'aimerais que de cette fonction soit déduites les 1/2 jours de vacs.

Or, les 1/2 jours sont inscrits en bordeaux avec le texte "/".

Je pensais faire une fonction du style:

=nbcouleur($E9:$BD13;"bordeau")-SOMMEPROD((E9:BD13="/")*(nbcouleur($E9:$BD13;"bordeau")))

Mais cela calcule le nombre de cellules bordeaux - nb cellules bordeaux - nb cellule avec texte "/"... ce qui me compte des jours à double!

J'ai également testé:

=nbcouleur($E39:$BD43;"bordeau") - 0.5*NB.SI(E39:BD43;"/")

Mais dans ce cas, ca prend aussi en compte les cellules "/" bleue, bordeau, verte ou autre....

Comment faire pour prendre en compte que les cellules bordeaux qui mentionnent le texte "/"???

Merci d'avance pour votre aide!

Bonsoir

A essayer en modifiant ta macro

Function nbcouleur(plage As Range, couleur As Variant) As Double
Application.Volatile True

Dim cellule As Range, NB AsDouble
Application.Volatile True
NB = 0
For Each cellule In plage
If couleur = "bordeau" Then couleur = 52
If cellule.Interior.ColorIndex = couleur Then
NB = NB + 1+ ((InStr(1, cellule, "/") = 1) / 2)
End If
Next cellule
nbcouleur = NB
End Function

Respectes bien l'ordre des parenthèses

GENIAL!!!!!!!

Ca marche! Merci beaucoup!!!

Rechercher des sujets similaires à "comment calculer fonction critere"