Sub essai()
[O2] = NBSIVisibles(Range("A2:A25"), [O1])
[P2] = NBSIVisibles(Range("A2:A25"), [P1])
[Q2] = NBSIVisibles(Range("A2:A25"), [Q1])
End Sub
Function NBSIVisibles(champ As Range, valeur)
Application.Volatile
t = 0
For Each c In champ
If Not c.EntireRow.Hidden And Not c.EntireColumn.Hidden Then
If c.Value = valeur Then t = t + 1
End If
Next c
NBSIVisibles = t
End Function