Bonjour,
Une proposition :
Pour bloquer l'enregistrement, dans "ThisWorkbook", tu peux avoir la procedure "BeforeSave" (avant la sauvegarde il fera)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Plage1, Plage2, Plage3, Cell As Range
Dim CellVide As String
Set Plage1 = Feuil1.Range("B9:B12")
Set Plage2 = Feuil1.Range("B15:B20")
Set Plage3 = Feuil1.Range("D9:D10")
For Each Cell In Union(Plage1, Plage2, Plage3)
If Cell = "" Then CellVide = CellVide & Cell.Address & Chr(10)
Next Cell
If CellVide <> "" Then
Msg = MsgBox(CellVide & Chr(10) & "Fichier NON sauvegardé", vbOKOnly + vbCritical, "Cellules vides :")
Cancel = True
End If
End Sub
"Cell" va parcourir tes plages, si il trouve une cellule vide, il va l'inscrire dans la liste "CellVide".
On controle si cette liste contient des valeurs, si c'est le cas, on indique le message et on annule l'enregistrement.
A+