OVH Cloud OVH Cloud

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

6 réponses

1 2
Avatar
Alpha
Désolé Nicolas après test, cela ne fonctionne toujours pas, impossible de
sortir.
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










Avatar
Clément Marcotte
Morale de l'histoire. Il faut arrêter de prendre les utilisateurs pour
des débiles. Je rêve du jour où un utilisateur aura assez de courage
pour juste faire On/OFF.




"Alpha" a écrit dans le message de
news:%
Désolé Nicolas après test, cela ne fonctionne toujours pas,
impossible de

sortir.
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














Avatar
Nicolas B.
Pourtant, chez ça fonctionne.

N'as-tu pas oublié de copier aussi Dim Bouton As Boolean ?
Essaye aussi d'exécuter directement la macro Sortie sans passer par un
bouton.


A+
--
Nicolas B.

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


Désolé Nicolas après test, cela ne fonctionne toujours pas,
impossible de sortir.
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










Avatar
Alpha
Bonjour Nicolas,
J'ai bien suivis tes instructions à la lettre, mais en lançant la macro
sortie, le msg se lance également, impossible de sortir.
Dans tes explications, tu parles du BeforeSave ?
Alpha


"Nicolas B." a écrit dans le message de
news: #
Pourtant, chez ça fonctionne.

N'as-tu pas oublié de copier aussi Dim Bouton As Boolean ?
Essaye aussi d'exécuter directement la macro Sortie sans passer par un
bouton.


A+
--
Nicolas B.

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


Désolé Nicolas après test, cela ne fonctionne toujours pas,
impossible de sortir.
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














Avatar
AV
Si tu as un bouton sur la feuille, tu lui affectes la macro
ThisWorkbook.Pas_la_croix

Dans le module de ThisWorkbook :

Private Quitter As Boolean

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

Sub Pas_la_croix()
Quitter = True
ThisWorkbook.Close
End Sub

AV
Avatar
Alpha
Merci beaucoup AV, cela fonctionne parfaitement.
Encore bravo.
Alpha



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

Si tu as un bouton sur la feuille, tu lui affectes la macro
ThisWorkbook.Pas_la_croix

Dans le module de ThisWorkbook :

Private Quitter As Boolean

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

Sub Pas_la_croix()
Quitter = True
ThisWorkbook.Close
End Sub

AV




1 2