Empecher l'enregistrement d'un classeur sous condition

Bonjour, je souhaiterais rendre impossible l'enregistrement d'un classeur si une ligne d'un tableau n'est pas remplie completemet

Dans mon cas , tant que les lignes qui correspondent aux colonnes A=>J ne sont pas remplis, on ne peut pas enregistrer.

A noter que le nombre de ligne est aléatoire (ligne 2 =>XXX)et qu'il évolue dans le temps Ligne 1 étant l'entête fixe

Rien trouvé de fonctionnel, une idée?

Bonjour REGISVDO
Adapte le nom de la feuille, code à mettre dans le module ThiwWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim MaFeuille As Worksheet
Dim TBL()
Dim Cel As Variant
Dim DernLig As Long

Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") 'A adapter
DernLig = MaFeuille.Range("A" & MaFeuille.Rows.Count).End(xlUp).Row
TBL = MaFeuille.Range("A2:J" & DernLig)
For Each Cel In TBL
    If Cel = "" Then
        MsgBox "Fermeture du classeur impossible, des cellules sont vides.", vbExclamation, "Fermeture du classeur"
        Cancel = True
        Exit Sub
    End If
Next Cel
End Sub

Le code n'empeche pas de sauvegarder mais de quitter le classeur si les cellules de la plage sont vides, si vraiment tu veux bloquer les enregistrements :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim MaFeuille As Worksheet
Dim TBL()
Dim Cel As Variant
Dim DernLig As Long

Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") 'A adapter
DernLig = MaFeuille.Range("A" & MaFeuille.Rows.Count).End(xlUp).Row
TBL = MaFeuille.Range("A2:J" & DernLig)
For Each Cel In TBL
    If Cel = "" Then
        MsgBox "Sauvegarde impossible, des cellules sont vides.", vbExclamation, "Fermeture du classeur"
        Cancel = True
        Exit Sub
    End If
Next Cel

End Sub

Pour faire d'une pierre deux coup :

A noté qu'il est aussi possible de cibler les cellules vides pour aider au remplissage quand il y aura beaucoup de données

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If TestClose = False Then
        MsgBox "Sauvegarde impossible, des cellules sont vides.", vbExclamation, "Fermeture du classeur"
        Cancel = True
    End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If TestClose = False Then
        MsgBox "Fermeture du classeur impossible, des cellules sont vides.", vbExclamation, "Fermeture du classeur"
        Cancel = True
    End If
End Sub

Private Function TestClose() As Boolean
    Dim TBL()
    Dim Cel As Variant
    Dim DernLig As Long

    Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") 'A adapter
    DernLig = MaFeuille.Range("A" & MaFeuille.Rows.Count).End(xlUp).Row
    TBL = MaFeuille.Range("A2:J" & DernLig).Value
    For Each Cel In TBL
        If Cel = "" Then
            TestClose = False
            Exit Function
        End If
    Next Cel
    TestClose = True
End Function

Merci, je viens de tester, je n'y arrive pas, les enregistrements sont possibles, le nom de la feuille est ok.

J'ai fais un copier coller du code je pense au bon endroit , une fois coller j'ai les ongles de visual basic : Général et Worbook_beforeSave

Pas un pro d'excel, désolé

Merci, en cherchant on y arrive

Fonctionnel, ca me convient parfaitement

Oui il faut le mettre dans le bon module, en l'occurence là il s'agit du module ThisWorkbook. Donc si tu dis que ça marche c'est tant mieux :)

Bonne continuation, à bientôt, Gautier

Rechercher des sujets similaires à "empecher enregistrement classeur condition"