Bonjour
Si y a un 0 dans cette cellule c'est qu'une macro l'a placé dans cette case
Avant de l'écrire tester si l'on va écrire un 0 et dans ce cas ne pas l'écrire
CountA est l'équivalent de NBVAL() (voir l'aide)
Si tu ne veux pas enlever les 0 essayes
If Application.CountA(Range("E21:P23")) - Application.CountIf(Range("E21:P23"), 0) = 0 Then
' plage vide
End If
CountIf est l'équivalent de NB.SI() (voir l'aide)