Empêcher fermeture par (la petite croix)

Bonjour à tous,

J'espère que vous allez bien.

J'ai mon fichier vba qui a un bouton de fermeture (en cliquant dessus, le fichier s'enregistre et se ferme tout seul) (voir fichier ci-joint). Tout fonctionne à merveille.

Je suis à la recherche d 'une solution vba pour bloquer la petite croix qui se trouve en haut à droite d'un fichier excel (voir image en ci-dessous) , pour être OBLIGER de fermer le classeur que par le bouton de sauvegarde que j'ai crée.

image

Quand j'ajoute le code ci-dessous dans le le module "ThisWorkbook", l'impossible de fermer le fichier par cette croix, mais il devient également impossible de le fermer par le bouton que j'ai crée. Voici le code

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True
End Sub

Pouvez-vous m'aider à nouveau s'il vous plait ?

Toutes mes tentatives ont été vaine jusqu’à présent.

Dans l'attente de votre retour.

16fermeture-01.xlsm (49.09 Ko)

Bonsoir,

Exemple que j'ai sous le coude

Slts

Bonjour boss_68,

Je teste et je te reviens

Salut,

Moins rapide que boss_68 mais le même principe.

Mais avec IIf que j'aime bien pour gérer les conditions en VBA

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = IIf(sortir = False, True, False)
End Sub

et le code dans le module avec la variable public sortir en booléan

Public sortir As Boolean

Sub QUIT()
sortir = True
CreateObject("WScript.Shell").Run "mshta.exe vbscript:close(CreateObject(""WScript.Shell"").Popup(""Fichier sauvegardé"",1,""Leakim""))"

    Application.DisplayAlerts = False
    Application.QUIT
    With ThisWorkbook
        .Save
        .Close
    End With
    Application.DisplayAlerts = True
End Sub

et la création d'un pop-up de confirmation de l'enregistrement.

Voilà

Boss_68,

J'ai adapté ton code et il fonctionne.

Aussi, j'aimerai que tu m'expliques ton code ci-dessous, en y ajoutant les commentaires stp

flag = True
Application.DisplayAlerts = False 'il peut y avoir un message à l'enregistrement...
With ThisWorkbook
  .Save
  If Workbooks.Count = 1 Then Application.QUIT Else .Close
End With

Leakim, merci à toi

RE

flag = True 'Cette ligne initialise une variable appelée flag à True

Application.DisplayAlerts = False 'Cette instruction désactive les alertes et messages de confirmation dans Excel, comme ceux qui demandent de confirmer l'enregistrement d'un fichier ou l'écrasement d'un fichier existant

With ThisWorkbook 'Le mot-clé With indique que toutes les instructions à l’intérieur de ce bloc font référence à ThisWorkbook

.Save 'Cette méthode enregistre les modifications du classeur courant (ThisWorkbook)

If Workbooks.Count = 1 Then Application.Quit Else .Close 'Si un seul classeur est ouvert (Workbooks.Count = 1), Excel se ferme entièrement avec Application.Quit

End With 'Cette instruction marque la fin du bloc With

Slts

Merci boss_68, tu es un vrai BOSS.

Merci à tous

Rechercher des sujets similaires à "empecher fermeture petite croix"