Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empêcher la fermeture du fichier Excel par la croix.

16 réponses
Avatar
Alpha
Bonjour
je souhaite empêcher la fermeture du fichier Excel par la croix.
Merci
Alpha

10 réponses

1 2
Avatar
Nicolas B.
Salut Alpha,

Une solution sur Excelabo :
http://www.excelabo.net/xl/application.php#emechercroixfichier


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour
je souhaite empêcher la fermeture du fichier Excel par la croix.
Merci
Alpha


Avatar
Alpha
Merci beaucoup Nicolas,
J'ai en effet récupérer ceci, mais est-il possible de mettre un msgbox
vous devez quitter par le bouton quitter ?
Merci

Dans un module de ton classeur tu colles ceci :

Public bye As Boolean

Sub quitter()
bye = True
ThisWorkbook.Close
End Sub

Tu appelles quitter dans le code de ton bouton

Et dans le module ThisWorkbook, ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub

"Nicolas B." a écrit dans le message de
news: #
Salut Alpha,

Une solution sur Excelabo :
http://www.excelabo.net/xl/application.php#emechercroixfichier


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour
je souhaite empêcher la fermeture du fichier Excel par la croix.
Merci
Alpha






Avatar
Nicolas B.
Dans le ThisWorkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
MsgBox "C'est pas par là la sortie !"
End Sub


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Merci beaucoup Nicolas,
J'ai en effet récupérer ceci, mais est-il possible de mettre un msgbox
vous devez quitter par le bouton quitter ?
Merci

Dans un module de ton classeur tu colles ceci :

Public bye As Boolean

Sub quitter()
bye = True
ThisWorkbook.Close
End Sub

Tu appelles quitter dans le code de ton bouton

Et dans le module ThisWorkbook, ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub


Avatar
Alpha
Trop rapide Nicolas, et vraiment très sympa de ta part, une p'tite dernière,
peux-tu en 2 mots m'expliquer cette proc ?
Alpha

"Nicolas B." a écrit dans le message de
news:
Dans le ThisWorkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
MsgBox "C'est pas par là la sortie !"
End Sub


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Merci beaucoup Nicolas,
J'ai en effet récupérer ceci, mais est-il possible de mettre un msgbox
vous devez quitter par le bouton quitter ?
Merci

Dans un module de ton classeur tu colles ceci :

Public bye As Boolean

Sub quitter()
bye = True
ThisWorkbook.Close
End Sub

Tu appelles quitter dans le code de ton bouton

Et dans le module ThisWorkbook, ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub






Avatar
FxM
Bnsoir,

Alpha wrote:

Trop rapide Nicolas,
Peut-être un peu trop ;o) Essaie avec :


Private Sub Workbook_BeforeClose(Cancel As Boolean)
if not bye then
MsgBox "C'est pas par là la sortie !"
Cancel = true
end if
End Sub

Lorsque tu cliques sur ton bouton, tu lances quitter()
Sub quitter()
bye = True 'la variable bye est mise à vrai (true)
ThisWorkbook.Close 'puis tu quittes le classeur
End Sub

Avant de fermer le classeur ->
Private Sub Workbook_BeforeClose(Cancel As Boolean)

if condition then ... (si condition alors ...)
si la condition est vrai alors ce qui suit est effectué.
La condition est not bye.

Tu quittes par le bouton -> bye = true -> not bye = false
Donc le message n'est pas affiché puisque la condition est fausse.
A l'inverse tu cherches à quitter par la croix, bye est false, not bye
= false -> afficher le message.

Cancel est l'annulation de l'action. Si tu mets cancel à true,
beforeclose est arreté et le classeur ne se ferme pas.

Voilà, voilà.

@+
FxM




et vraiment très sympa de ta part, une p'tite dernière,
peux-tu en 2 mots m'expliquer cette proc ?
Alpha

"Nicolas B." a écrit dans le message de
news:

Dans le ThisWorkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
MsgBox "C'est pas par là la sortie !"
End Sub


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC



Merci beaucoup Nicolas,
J'ai en effet récupérer ceci, mais est-il possible de mettre un msgbox
vous devez quitter par le bouton quitter ?
Merci

Dans un module de ton classeur tu colles ceci :

Public bye As Boolean

Sub quitter()
bye = True
ThisWorkbook.Close
End Sub

Tu appelles quitter dans le code de ton bouton

Et dans le module ThisWorkbook, ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub










Avatar
Alpha
Eh bin dis donc que dire !
Merci beaucoup
Alpha

"FxM" a écrit dans le message de news:

Bnsoir,

Alpha wrote:

Trop rapide Nicolas,
Peut-être un peu trop ;o) Essaie avec :


Private Sub Workbook_BeforeClose(Cancel As Boolean)
if not bye then
MsgBox "C'est pas par là la sortie !"
Cancel = true
end if
End Sub

Lorsque tu cliques sur ton bouton, tu lances quitter()
Sub quitter()
bye = True 'la variable bye est mise à vrai (true)
ThisWorkbook.Close 'puis tu quittes le classeur
End Sub

Avant de fermer le classeur ->
Private Sub Workbook_BeforeClose(Cancel As Boolean)

if condition then ... (si condition alors ...)
si la condition est vrai alors ce qui suit est effectué.
La condition est not bye.

Tu quittes par le bouton -> bye = true -> not bye = false
Donc le message n'est pas affiché puisque la condition est fausse.
A l'inverse tu cherches à quitter par la croix, bye est false, not bye
= false -> afficher le message.

Cancel est l'annulation de l'action. Si tu mets cancel à true,
beforeclose est arreté et le classeur ne se ferme pas.

Voilà, voilà.

@+
FxM




et vraiment très sympa de ta part, une p'tite dernière,
peux-tu en 2 mots m'expliquer cette proc ?
Alpha

"Nicolas B." a écrit dans le message
de


news:

Dans le ThisWorkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
MsgBox "C'est pas par là la sortie !"
End Sub


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC



Merci beaucoup Nicolas,
J'ai en effet récupérer ceci, mais est-il possible de mettre un msgbox
vous devez quitter par le bouton quitter ?
Merci

Dans un module de ton classeur tu colles ceci :

Public bye As Boolean

Sub quitter()
bye = True
ThisWorkbook.Close
End Sub

Tu appelles quitter dans le code de ton bouton

Et dans le module ThisWorkbook, ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub













Avatar
FxM
Trop rapide Nicolas,


Peut-être un peu trop ;o)
Pan sur les doigts François, faut essayer d'abord !

La macro de Nicolas va bien jusqu'au bout et donc le message est
affiché tandis que le classeur reste ouvert. Excuses donc.

@+
FxM


Avatar
Alpha
Euh... Désolé François-Xavier, cela fonctionne très bien, mais comme j'ai
mis une proc dans le workbook Before_close, même quand je quitte avec le
bouton,
in fine, le msgbox s'affiche, sais-tu comment je peux contourner le pb ?
Alpha


"FxM" a écrit dans le message de news:
#
Trop rapide Nicolas,


Peut-être un peu trop ;o)
Pan sur les doigts François, faut essayer d'abord !

La macro de Nicolas va bien jusqu'au bout et donc le message est
affiché tandis que le classeur reste ouvert. Excuses donc.

@+
FxM





Avatar
Nicolas B.
Ceci devrait te convenir (affecte le clic du bouton de sortie à la macro
Sortie) :

Dim Bouton As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Bouton = False Then
Cancel = True
MsgBox "Coincé !"
End If
End Sub

Private Sub Workbook_Open()
Bouton = False
End Sub

Sub Sortie()
Bouton = True
ThisWorkbook.Close
End Sub

Explications : tu rajoute une variable Bouton qui va indiquer si la demande
de fermeture vient du bouton ou de la croix. Dans le BeforeSave, en résumé :
si Bouton úlse, alors empêche la fermeture.
A l'ouverture du classeur, la valeur est mise à False. Ainsi, en cliquant
sur la croix, la fermeture est bloquée.
Quand tu clique sur le bouton de fermeture, la variable Bouton est mise à
True, et en faisant ThisWorkbook.close, la macro BeforeSave, qui se
déclenche quand même, n'empêche plus la fermeture.


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Euh... Désolé François-Xavier, cela fonctionne très bien, mais comme
j'ai mis une proc dans le workbook Before_close, même quand je quitte
avec le bouton,
in fine, le msgbox s'affiche, sais-tu comment je peux contourner le
pb ? Alpha


"FxM" a écrit dans le message de news:
#
Trop rapide Nicolas,


Peut-être un peu trop ;o)
Pan sur les doigts François, faut essayer d'abord !

La macro de Nicolas va bien jusqu'au bout et donc le message est
affiché tandis que le classeur reste ouvert. Excuses donc.

@+
FxM






Avatar
Alpha
Ok, Nicolas, je te remercie infiniment.
Alpha

"Nicolas B." a écrit dans le message de
news: #
Ceci devrait te convenir (affecte le clic du bouton de sortie à la macro
Sortie) :

Dim Bouton As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Bouton = False Then
Cancel = True
MsgBox "Coincé !"
End If
End Sub

Private Sub Workbook_Open()
Bouton = False
End Sub

Sub Sortie()
Bouton = True
ThisWorkbook.Close
End Sub

Explications : tu rajoute une variable Bouton qui va indiquer si la
demande

de fermeture vient du bouton ou de la croix. Dans le BeforeSave, en résumé
:

si Bouton úlse, alors empêche la fermeture.
A l'ouverture du classeur, la valeur est mise à False. Ainsi, en cliquant
sur la croix, la fermeture est bloquée.
Quand tu clique sur le bouton de fermeture, la variable Bouton est mise à
True, et en faisant ThisWorkbook.close, la macro BeforeSave, qui se
déclenche quand même, n'empêche plus la fermeture.


--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Euh... Désolé François-Xavier, cela fonctionne très bien, mais comme
j'ai mis une proc dans le workbook Before_close, même quand je quitte
avec le bouton,
in fine, le msgbox s'affiche, sais-tu comment je peux contourner le
pb ? Alpha


"FxM" a écrit dans le message de news:
#
Trop rapide Nicolas,


Peut-être un peu trop ;o)
Pan sur les doigts François, faut essayer d'abord !

La macro de Nicolas va bien jusqu'au bout et donc le message est
affiché tandis que le classeur reste ouvert. Excuses donc.

@+
FxM










1 2