Enregistrement d'un fichier Excel si certaines cellules sont remplies

Bonjour,

j'ai réalisé un programme VBA pour bloquer l'enregistrement si certaines cellules de mon fichier ne sont pas remplies

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.Sheets("Fiche_contrôle").Range("B3,B4,B5,B6,B11,B12,C11,C12,D11,D12,B15,B16,C15,C16,D15,D16,B21,C21,D21,E21,F21,G21,B22,C22,D22,E22,F22,G22,B25,C25,D25,E25,F25,G25,B26,C26,D26,E26,F26,G26,B29,C29,D29,E29,F29,B30,C30,D30,E30,F30,J11,J12,J13,J15,J21,J22,J23,J25").Value = "" Then
Cancel = True
MsgBox "/!\ Merci de remplir tous les champs /!\"
End If
End Sub

Le problème est qu'il suffit uniquement de remplir la première cellule indiqué après la commande range (ici B3) pour débloquer l'enregistrement.

si cette case n'est pas remplis et que les autres si le bloquage est bien effectif.

Bonjour,

A tester :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim AireTest As Range

    Set AireTest = Application.Sheets("Fiche_contrôle").Range("B3,B4,B5,B6,B11,B12,C11,C12,D11,D12,B15,B16,C15,C16,D15,D16,B21,C21,D21,E21,F21,G21,B22,C22,D22,E22,F22,G22,B25,C25,D25,E25,F25,G25,B26,C26,D26,E26,F26,G26,B29,C29,D29,E29,F29,B30,C30,D30,E30,F30,J11,J12,J13,J15,J21,J22,J23,J25")

    If WorksheetFunction.CountA(AireTest) < AireTest.Count Then
            MsgBox "/!\ Merci de remplir tous les champs /!\"
     End If

     Set AireTest = Nothing

End Sub

Merci beaucoup tout fonctionne :)

est-il possible de rejoindre la commande a un bouton ?

Si oui comment faire svp

Vous souhaitez lancer le code depuis un contrôle ActiveX au lieu de l'événement BeforeSave ? Est-ce bien cela ?

je veux que le bouton puisse bloquer l'enregistrement si les cases sont vides.

Je ne sais pas si je réponds à votre demande, logiquement il faut seulement ajouter Cancel dans le code.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim AireTest As Range

    Set AireTest = ThisWorkbook.Sheets("Fiche_contrôle").Range("B3,B4,B5,B6,B11,B12,C11,C12,D11,D12,B15,B16,C15,C16,D15,D16,B21,C21,D21,E21,F21,G21,B22,C22,D22,E22,F22,G22,B25,C25,D25,E25,F25,G25,B26,C26,D26,E26,F26,G26,B29,C29,D29,E29,F29,B30,C30,D30,E30,F30,J11,J12,J13,J15,J21,J22,J23,J25")

    If WorksheetFunction.CountA(AireTest) < AireTest.Count Then
            Cancel = True
            MsgBox "/!\ Merci de remplir tous les champs /!\"
     End If

     Set AireTest = Nothing

End Sub

Merci pour l'aide

Rechercher des sujets similaires à "enregistrement fichier certaines remplies"