Pour mettre les résultats dans un tableau, plus besoin de filtre...
Fonction réaménagée pour calculer toutes les options :
Function NBUNICMARKSTT(plg As Range, Optional plMark As Range, Optional mark As String, _
Optional plStt As Range, Optional stt As String)
Dim d As Object, op%, i%
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
If mark <> "" And Not plMark Is Nothing Then op = 1
If stt <> "" And Not plStt Is Nothing Then op = op + 2
With plg
For i = 1 To .Cells.Count
Select Case op
Case 0
d(.Cells(i).Value) = ""
Case 1
If plMark.Cells(i) = mark Then d(.Cells(i).Value) = ""
Case 2
If plStt.Cells(i) = stt Then d(.Cells(i).Value) = ""
Case 3
If plMark.Cells(i) = mark And plStt.Cells(i) = stt Then _
d(.Cells(i).Value) = ""
End Select
Next i
End With
NBUNICMARKSTT = d.Count
End Function
Voir dans ton tableau de résultats, l'utilisation selon options retenues. Pour chaque zone colorée, la formule de la cellule supérieure gauche de la zone colorée est recopiable sur toute la zone de même couleur...
Cordialement.
NB- pour la cellule jaune, le même résultat aurait été obtenu avec la formule classique :
=SOMMEPROD(1/NB.SI(Feuil1!$A$3:$A$39;Feuil1!$A$3:$A$39))