Bon, finalement, ce n'est pas dans le code des jours intermédiaires à la date de début et date de fin qu'est l'erreur.
Comme mes mois comportent des demi journées, c'est avec l'absence du dernier jour et l'après-midi que le probléme arrive: Cà efface bien la dernière demi journée, comme il faut, mais çà efface aussi un autre aprés-midi dans la période, et uniquement pour la 1ère moitié (jusqu'au 16/08 exactement) avec des jours doublés...
Autrement dit, je n'ai pas le probléme que j'ai aprés le 16 du mois.
Exemple pour les CP:
'dernier jour CP en M
If Day(ws1.Range("A" & n)) = Day(tab_bd(i - 1, 4)) And ws1.Range("B" & n) = "AM" _
And ws1.Cells(2, dercol) = tab_bd(i - 1, 1) And tab_bd(i - 1, 5) = "M" Then ws1.Cells(n, dercol).ClearContents
Voilà