Bloquer l'enregistrement si cellules vides

Bonjour à toutes et tous,

Je cherche a bloquer l'enregistrement d'un fichier tant que les cellules B9:B12, B15:B20 et D9:D10 sont vides et afficher un message indiquant quelle cellule n'est pas remplie.

Merci pour votre aide.

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+

Bon Geof,

merci pour ton retour. Je rencontre un PB sur la ligne If Cell = "" Then qui semble ne pas être reconnu.

par ailleurs ma feuille est nommée "BPU", je peux remplacer "Feuil1" par "BPU"?

bat,

Bonjour le fil

Peut-être mieux avec

If Cell.Value

Et non, "Feuil1" représente l'objet WorkSheet du classeur

Sinon, il faut faire

Sheets("BPU")

Ce que je conseille personnellement

A+

Pour la feuille "BPU" tu as par exemple :

image

Feuli4.Range(...
Sheets("BPU").Range(...

Dans le premier cas renommer la feuille ne fera pas planter la macro.

Pour ton probleme, je ne vois pas ce qu'il y a de merdique

Edit : Bonjour Bruno,
Je n'ai pas réactualisé avant de poster

Hello BrunoM,

Bien joué:-)

Encore merci a vous deux.

De rien, mais n'oublie pas

A+

Rechercher des sujets similaires à "bloquer enregistrement vides"