Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2
heures de test, cela ne fonctionne pas.
Merci
Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Long
Sheets("saisie").Select
n = Application.CountA([A3:A10000])
If Application.CountA([B3:B10000]) <> n And _
Application.CountA([C3:C10000]) <> n And _
Application.CountA([D3:D10000]) <> n And _
Application.CountA([E3:E10000]) <> n And _
Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement
les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données
mal saisies !": Exit Sub
Sheets("saisie").Select
End If
Exit Sub
Else
ThisWorkbook.Save
Application.Quit
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-François Aubert
Salut Alpha, Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée avant la fermeture du classeur, mais n'empêche pas sa fermeture. Il faut donc utilisé le Cancel. Si la condition du If n'est pas remplie, on met Cancel à True, et le classeur ne ferme pas, sinon on sauve le classeur et on quitte Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _ "Vous devez saisir correctement les données dans ce tableau ! " & _ vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas Else ThisWorkbook.Save Application.Quit End If End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Alpha" a écrit dans le message de news:%
Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2 heures de test, cela ne fonctionne pas. Merci Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données mal saisies !": Exit Sub Sheets("saisie").Select End If Exit Sub Else ThisWorkbook.Save Application.Quit End Sub
Salut Alpha,
Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée avant la fermeture du
classeur,
mais n'empêche pas sa fermeture.
Il faut donc utilisé le Cancel.
Si la condition du If n'est pas remplie, on met Cancel à True,
et le classeur ne ferme pas, sinon on sauve le classeur et on quitte Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Long
Sheets("saisie").Select
n = Application.CountA([A3:A10000])
If Application.CountA([B3:B10000]) <> n And _
Application.CountA([C3:C10000]) <> n And _
Application.CountA([D3:D10000]) <> n And _
Application.CountA([E3:E10000]) <> n And _
Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _
"Vous devez saisir correctement les données dans ce tableau ! " & _
vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas
Else
ThisWorkbook.Save
Application.Quit
End If
End Sub
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Alpha" <Alpha@ducentaure.fr> a écrit dans le message de
news:%23q4CSo04DHA.1816@TK2MSFTNGP12.phx.gbl...
Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2
heures de test, cela ne fonctionne pas.
Merci
Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Long
Sheets("saisie").Select
n = Application.CountA([A3:A10000])
If Application.CountA([B3:B10000]) <> n And _
Application.CountA([C3:C10000]) <> n And _
Application.CountA([D3:D10000]) <> n And _
Application.CountA([E3:E10000]) <> n And _
Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement
les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données
mal saisies !": Exit Sub
Sheets("saisie").Select
End If
Exit Sub
Else
ThisWorkbook.Save
Application.Quit
End Sub
Salut Alpha, Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée avant la fermeture du classeur, mais n'empêche pas sa fermeture. Il faut donc utilisé le Cancel. Si la condition du If n'est pas remplie, on met Cancel à True, et le classeur ne ferme pas, sinon on sauve le classeur et on quitte Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _ "Vous devez saisir correctement les données dans ce tableau ! " & _ vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas Else ThisWorkbook.Save Application.Quit End If End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Alpha" a écrit dans le message de news:%
Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2 heures de test, cela ne fonctionne pas. Merci Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données mal saisies !": Exit Sub Sheets("saisie").Select End If Exit Sub Else ThisWorkbook.Save Application.Quit End Sub
Alpha
Merci beaucoup Jean-François, c'est très sympa de ta part, tes explications sont très claires. Alpha
"Jean-François Aubert" <à a écrit dans le message de news:
Salut Alpha, Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée avant la fermeture du
classeur, mais n'empêche pas sa fermeture. Il faut donc utilisé le Cancel. Si la condition du If n'est pas remplie, on met Cancel à True, et le classeur ne ferme pas, sinon on sauve le classeur et on quitte Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _ "Vous devez saisir correctement les données dans ce tableau ! " & _
vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas Else ThisWorkbook.Save Application.Quit End If End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Alpha" a écrit dans le message de news:%
Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2
heures de test, cela ne fonctionne pas. Merci Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement
les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données
mal saisies !": Exit Sub Sheets("saisie").Select End If Exit Sub Else ThisWorkbook.Save Application.Quit End Sub
Merci beaucoup Jean-François, c'est très sympa de ta part, tes explications
sont très claires.
Alpha
"Jean-François Aubert" <àOterjfaubert@bluewin.ch> a écrit dans le message de
news:eAiuO304DHA.2404@TK2MSFTNGP11.phx.gbl...
Salut Alpha,
Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée
avant la fermeture du
classeur,
mais n'empêche pas sa fermeture.
Il faut donc utilisé le Cancel.
Si la condition du If n'est pas remplie, on met Cancel à True,
et le classeur ne ferme pas, sinon on sauve le classeur et on quitte
Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Long
Sheets("saisie").Select
n = Application.CountA([A3:A10000])
If Application.CountA([B3:B10000]) <> n And _
Application.CountA([C3:C10000]) <> n And _
Application.CountA([D3:D10000]) <> n And _
Application.CountA([E3:E10000]) <> n And _
Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _
"Vous devez saisir correctement les données dans ce tableau ! " &
_
vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas
Else
ThisWorkbook.Save
Application.Quit
End If
End Sub
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Alpha" <Alpha@ducentaure.fr> a écrit dans le message de
news:%23q4CSo04DHA.1816@TK2MSFTNGP12.phx.gbl...
Je souhaite intégrer cette proc directement dans thisworkbook, mais
malgré 2
heures de test, cela ne fonctionne pas.
Merci
Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Long
Sheets("saisie").Select
n = Application.CountA([A3:A10000])
If Application.CountA([B3:B10000]) <> n And _
Application.CountA([C3:C10000]) <> n And _
Application.CountA([D3:D10000]) <> n And _
Application.CountA([E3:E10000]) <> n And _
Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir
correctement
les données dans ce tableau ! " & vbNewLine & "", vbExclamation, "
Données
mal saisies !": Exit Sub
Sheets("saisie").Select
End If
Exit Sub
Else
ThisWorkbook.Save
Application.Quit
End Sub
Merci beaucoup Jean-François, c'est très sympa de ta part, tes explications sont très claires. Alpha
"Jean-François Aubert" <à a écrit dans le message de news:
Salut Alpha, Le Exit Sub que tu as placé ne fait que de sortir de la macro exécutée avant la fermeture du
classeur, mais n'empêche pas sa fermeture. Il faut donc utilisé le Cancel. Si la condition du If n'est pas remplie, on met Cancel à True, et le classeur ne ferme pas, sinon on sauve le classeur et on quitte Excel.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & _ "Vous devez saisir correctement les données dans ce tableau ! " & _
vbNewLine & "", vbExclamation, " Données mal saisies !":
Cancel = True ' le classeur ne ferme pas Else ThisWorkbook.Save Application.Quit End If End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Alpha" a écrit dans le message de news:%
Je souhaite intégrer cette proc directement dans thisworkbook, mais malgré 2
heures de test, cela ne fonctionne pas. Merci Alpha
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim n As Long Sheets("saisie").Select n = Application.CountA([A3:A10000]) If Application.CountA([B3:B10000]) <> n And _ Application.CountA([C3:C10000]) <> n And _ Application.CountA([D3:D10000]) <> n And _ Application.CountA([E3:E10000]) <> n And _ Application.CountA([F3:F10000]) <> n Then
MsgBox "Il y a une anomalie !" & vbNewLine & "Vous devez saisir correctement
les données dans ce tableau ! " & vbNewLine & "", vbExclamation, " Données
mal saisies !": Exit Sub Sheets("saisie").Select End If Exit Sub Else ThisWorkbook.Save Application.Quit End Sub