Bonjour vb60400
Tu devrais posé ta question dans le Forum dédié à Excel
Cependant voici une solution VBA
Function CompterMois(zone As Range, quelMois As Integer)
Dim cel
Dim cptMois As Integer
For Each cel In zone
If Month(cel) = quelMois Then
cptMois = cptMois + 1
End If
Next
CompterMois = cptMois
End Function
zone c'est la "plage de cellule" que tu veux tester,
quelMois c'est le mois recherché
Dans Excel tu écris par exemple pour rechercher les mois de janvier (comme une formule classique)
= CompterMois(laZoneDeRecherche;1)
Attention actuellement le code ne teste que le mois et pas le mois d'une année !!!!
C'est 01/01/2016 est compté mais 01/01/2015 aussi (par exemple)
Si tu veux prendre en compte l'année il faut modifier ainsi :
Function CompterMois(zone As Range, quelMois As Integer, quelAn As Integer)
Dim cel
Dim cptMois As Integer
For Each cel In zone
If (Month(cel) = quelMois) And (Year(cel) = quelAn) Then
cptMois = cptMois + 1
End If
Next
CompterMois = cptMois
End Function
où (évidement) quelAn est l'année à prendre en compte
Dans Excel tu écris par exemple pour rechercher les mois de janvier de 2016 (comme une formule classique)
= CompterMois(laZoneDeRecherche;1;2016)
Ou encore mieux :
Function CompterMois(zone As Range, quelMois As Integer, Optional quelAn As Integer)
Dim cel
Dim cptMois As Integer
Dim an
If quelAn = 0 Then
an = Year(Date)
Else
an = quelAn
End If
For Each cel In zone
If (Month(cel) = quelMois) And (Year(cel) = an) Then
cptMois = cptMois + 1
End If
Next
CompterMois = cptMois
End Function
Où l'année est optionnelle et devient l'année en cours si omise !
PS/
Tu également ajouter
Application.Volatile
au début de la fonction (juste après le(s) dim pour que les calculs soient actualisés à chaque changement dans tes onglets