XL 2016 Empêcher la fermeture du classeur avec croix rouge

badraaliou4

XLDnaute Junior
Bonjour,
Je ne parviens pas bloquer la fermeture mon classeur avec le croix rouge sous Excel 2016.
Ci-dessous mon code
Merci pour votre aide
VB:
Private Sub workbook_beforeclose(cancel as boolean)
dim Sh as string
sh=activesheet.name
if sh<>("login") then cancel= not bye
application.thisworkbook.saved=true
end sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @badraaliou4,

Ne sachant pas réellement ce que vous désirez faire, à tout hasard au cas où le nom de la feuille "login" comporterait une majuscule:
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If ActiveSheet.Name <> Sheets("login").Name Then Cancel = Not bye
   ThisWorkbook.Saved = True
End Sub
 

Pounet95

XLDnaute Occasionnel
Bonjour,
Trouvé ceci dans mes archives du temps d'Excelabo :(
Code dû à Frédéric Sigonneau

Je l'ai placé dans le workbook_open.
Est-ce le meilleur endroit ??

Code:
'Attribute VB_Name = "CroixFermetureFeuilleCalcul"


'désactiver la croix de fermeture des feuilles de calcul d'un classeur
'(supprime aussi les boutons minimiser et agrandir -> pas possible de
'désactiver la seule croix de fermeture)
'Attribute FeuillesSansCroixFermeture.VB_Description = "Macro enregistrée le 23/06/2002 par FS"
'Attribute FeuillesSansCroixFermeture.VB_ProcData.VB_Invoke_Func = " \n14"

Sub FeuillesSansCroixFermeture()
  ActiveWorkbook.Protect Structure:=False, Windows:=True
End Sub
 

Chris24

XLDnaute Impliqué
Supporter XLD
Bonjour

A adapté à votre application

VB:
'Empecher la fermeture d'excel

'dans le module ThisWorkbook:

Private Sub Workbook_BeforeClose(Cancel AS Boolean)
      Cancel = Not AutoriseFermeture
End Sub

'puis dans un module quelconque du classeur

Public AutoriseFermeture As Boolean
Sub Quitter()
AutoriseFermeture = True
Application.Quit
End Sub
 

jmfmarques

XLDnaute Accro
Bonjour Pounet95
On voit tout de suite que tu as bien compris (et en as tout compris) le code de Frédéric Sigonneau. o_O
 

Pounet95

XLDnaute Occasionnel
Bonjour,
Plutôt que de mettre en boîte et/ou ironiser , j'aimerais avoir une explication de ce que je n'ai pas compris. Et tout le monde en profiterais aussi, non ?
Et, pendant que j'y suis, tu n'aurais pas une proposition de solution pour "mon" problème avec les contrôles ImageList et ImageCombo ?
Merci
PS : j'ai peut-être mal compris ( encore et aussi ) l'humour ? Ne m'en veux pas , je suis un "vieux couillon" !
 

badraaliou4

XLDnaute Junior
Bonjour @badraaliou4,

Ne sachant pas réellement ce que vous désirez faire, à tout hasard au cas où le nom de la feuille "login" comporterait une majuscule:
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If ActiveSheet.Name <> Sheets("login").Name Then Cancel = Not bye
   ThisWorkbook.Saved = True
End Sub
Bonjour,
Merci mais ce code ne marche pas avec mon Excel 2016
 

Pounet95

XLDnaute Occasionnel
Re,
1 Je n'ai copié que ce que j'avais,
2. Tout le monde en profiterait ( je corrige ma faute d'orthographe ), je parle des explications que tu aurais pu donner.
Ceci dit (écrit plutôt), restons cool (cf icône) effectivement.
 

jmfmarques

XLDnaute Accro
Bonjour
Voilà donc enfin exposés les tenants et aboutissants. Et donc la solution (toute simple) :
VB:
Private Sub Workbook_BeforeClose(Cancel AS Boolean)
      if activesheet.name <> "login" then cancel = true
End Sub
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas