Sub Macro1()
Dim cel As Range 'déclare la variable cel (Cellule en Ligne)
Dim cec As Range 'déclare la variable cec (Cellule en Colonne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim nc As Integer 'déclare la variable nc (Nombre de Cadres)
Dim nnc As Integer 'déclare la variable nnc (Nombre de Non Cadres)
If Range("B4") = "" Then Exit Sub 'si la cellule B4 est vide, sort de la procédure
Set pl = Range("B4:B" & Range("B3").End(xlDown).Row) 'définit la plage pl
For Each cel In Range("B14:" & Cells(14, Application.Columns.Count).End(xlToLeft).Address(0, 0)) 'boucle 1 : sur toutes les cellule éditées cel de la ligne 14 en partant de la colonne B
nc = 0: nnc = 0 'initialise les variable nc et nnc
For Each cec In pl 'boucle sur toutes les cellule cec de la plage pl
'si le mois de la cellule cel est le même que le mois de la cellule cec et que la valeur cellule corespondant en colonne D est "cadre", incrémente nc
If Month(cec.Value) = Month(cel.Value) And cec.Offset(0, 2) = "cadre" Then nc = nc + 1
'si le mois de la cellule cel est le même que le mois de la cellule cec et que la valeur cellule corespondant en colonne D est "non cadre", incrémente nnc
If Month(cec.Value) = Month(cel.Value) And cec.Offset(0, 2) = "non cadre" Then nnc = nnc + 1
Next cec 'prochaine cellule de la boucle 2
cel.Offset(1, 0).Value = nc 'place le nombre de cadre
cel.Offset(2, 0).Value = nnc 'place le nombre de non cadre
Next cel 'prochaine cellule de la boucle 1
End Sub