OVH Cloud OVH Cloud

Fermer Excel par macro+inhiber la croix de fermeture

3 réponses
Avatar
sergio
Bonjour =E0 tous,
2 petites questions:
sur un classeur je voudrais interdire =E0 l'utilisateur de=20
sortir sauvagement en utilisant la croix, comment puis-je=20
la rendre inop=E9rante voir la fair disparaitre completement=20
(cette sortie sauvage fausse tout car on n'ex=E9cute pas=20
certaines macros obligatoires).

La 2 eme question:
L'utilisateur devra sortir en cliquant sur un bouton=20
quitter qui sauvegarde le classeur en y effectuant=20
certains calculs par contre une fois le fichier ferm=E9=20
Excel reste toujours ouvert ce qui n'est pas tres joli.

Merci d'avance
@+
Sergio

3 réponses

Avatar
Nicolas B.
Salut sergio,

Pour les deux questions, à placer dans le ThsiWorkbook :

Dim Fermer As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Fermer Then
Cancel = True
End If
End Sub

Sub Quitter()
Fermer = True
Application.Quit
End Sub

Et dans le module de la feuille contenant le bouton :

Private Sub CommandButton1_Click()
ThisWorkbook.Quitter
End Sub


A+
--
Nicolas B.

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

"sergio" a écrit dans le message de
news:6d0f01c3e698$636fe1c0$
Bonjour à tous,
2 petites questions:
sur un classeur je voudrais interdire à l'utilisateur de
sortir sauvagement en utilisant la croix, comment puis-je
la rendre inopérante voir la fair disparaitre completement
(cette sortie sauvage fausse tout car on n'exécute pas
certaines macros obligatoires).

La 2 eme question:
L'utilisateur devra sortir en cliquant sur un bouton
quitter qui sauvegarde le classeur en y effectuant
certains calculs par contre une fois le fichier fermé
Excel reste toujours ouvert ce qui n'est pas tres joli.

Merci d'avance
@+
Sergio
Avatar
RaMa
Bonsoir
Conseil: voir http://www.excelabo.net/xl/userforms.php#altF4

RaMa

"sergio" a écrit dans le message de
news:6d0f01c3e698$636fe1c0$
Bonjour à tous,
2 petites questions:
sur un classeur je voudrais interdire à l'utilisateur de
sortir sauvagement en utilisant la croix, comment puis-je
la rendre inopérante voir la fair disparaitre completement
(cette sortie sauvage fausse tout car on n'exécute pas
certaines macros obligatoires).

La 2 eme question:
L'utilisateur devra sortir en cliquant sur un bouton
quitter qui sauvegarde le classeur en y effectuant
certains calculs par contre une fois le fichier fermé
Excel reste toujours ouvert ce qui n'est pas tres joli.

Merci d'avance
@+
Sergio
Avatar
ChrisV
Bonjour Sergio,

Pour répondre aux 2 questions... avec toutefois une petite différence en ce
qui concerne la fermeture du classeur:
s'il est le seul ouvert dans Excel, alors sauvegarde puis fermeture du
classeur et d'Excel;
si le classeur n'est pas le seul ouvert, enregistrement et fermeture du
classeur mais Excel reste ouvert pour laisser les autres documents
disponibles...


Dans un module du classeur:

Public Const nomBO = "Macro/sauv/fermeture"
Public bye As Boolean

Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO
Set bo = Application.CommandBars.Add(nomBO)
With bo.Controls.Add(msoControlButton)
.Caption = "Quitter..."
.FaceId = 2151
.OnAction = "quitE"
End With
bo.Visible = True
End Sub

Sub DeleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub

Private Sub quitE()
DeleteBO
If Workbooks.Count > 1 Then
bye = True
fermeture
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=True
Else
bye = True
fermeture
With Application
.DisplayAlerts = False
ActiveWorkbook.Save
.Quit
End With
End If
End Sub

Private Sub fermeture()
Application.ScreenUpdating = False
With Application
.OnKey "^{w}"
.OnKey "^{s}"
End With
' ici le du code qui effectue certains calculs
Application.ScreenUpdating = True
End Sub


Dans la feuille de code de ThisWorkbook:

Private Sub Workbook_Open()
With Application
.ScreenUpdating = False
.OnKey "^{w}", ""
.OnKey "^{s}", ""
End With
Application.ScreenUpdating = True
CreateBO
End Sub

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


ChrisV


"sergio" a écrit dans le message de
news: 6d0f01c3e698$636fe1c0$
Bonjour à tous,
2 petites questions:
sur un classeur je voudrais interdire à l'utilisateur de
sortir sauvagement en utilisant la croix, comment puis-je
la rendre inopérante voir la fair disparaitre completement
(cette sortie sauvage fausse tout car on n'exécute pas
certaines macros obligatoires).

La 2 eme question:
L'utilisateur devra sortir en cliquant sur un bouton
quitter qui sauvegarde le classeur en y effectuant
certains calculs par contre une fois le fichier fermé
Excel reste toujours ouvert ce qui n'est pas tres joli.

Merci d'avance
@+
Sergio