Table des matières:
Vidéo: VBA Fermer un fichier avec ou sans enregistrement 2025
La macro présentée ici est un excellent moyen de protéger les utilisateurs contre la fermeture involontaire de leur fichier avant l'enregistrement. Une fois implémentée, cette macro garantit qu'Excel enregistre automatiquement le classeur avant de le fermer.
Excel avertira normalement les utilisateurs qui tentent de fermer un classeur non enregistré, en leur accordant une option d'enregistrement avant la fermeture. Cependant, de nombreux utilisateurs risquent de passer l'avertissement et de cliquer par inadvertance sur Non, indiquant à Excel de fermer sans enregistrer. Avec cette macro, vous protégez contre cela en sauvegardant automatiquement avant la fermeture.
Fonctionnement de la macro
Le code est déclenché par l'événement BeforeClose du classeur. Lorsque vous essayez de fermer le classeur, cet événement se déclenche en exécutant le code à l'intérieur. Le cœur du code est simple: il demande aux utilisateurs s'ils souhaitent fermer le classeur. La macro évalue ensuite si l'utilisateur a cliqué sur OK ou Annuler.
L'évaluation est effectuée avec une instruction Select Case. L'instruction Select Case est une alternative à l'instruction If-Then-Else, vous permettant d'effectuer des vérifications de condition dans vos macros. La construction de base d'une instruction Select Case est simple:
Sélectionnez Case Case = Case Is = Case Is = Fin Sélectionnez
Avec une instruction Select Case, vous pouvez effectuer de nombreuses vérifications conditionnelles. Dans ce cas, vous vérifiez simplement OK ou Annuler. Jetez un oeil sur le code:
Private Sub Workbook_BeforeClose (Cancel As Boolean) 'Étape 1: Activer la boîte de message et lancer la case à cocher Select Case MsgBox ("Enregistrer et fermer?", VbOKCancel)' Étape 2: bouton Annuler appuyé, donc annuler la fermeture Case Is = vbAnnuler Cancel = True 'Étape 3: bouton OK appuyé, donc enregistrez le classeur et fermez Case Is = vbOK ActiveWorkbook. Enregistrer 'Étape 4: Fermer votre instruction Select Case End End End
À l'étape 1, vous activez la boîte de message comme vérification de condition pour l'instruction Select Case. Vous utilisez l'argument vbOKCancel pour vous assurer que les boutons OK et Annuler sont présentés en tant que choix.
À l'étape 2, si l'utilisateur cliquait sur Annuler dans la boîte de message, la macro indique à Excel d'annuler l'événement Workbook_Close en transmettant True au paramètre Cancel Boolean.
Si l'utilisateur clique sur le bouton OK dans la boîte de message, l'étape 3 prend effet. Ici, vous dites à Excel de sauvegarder le classeur. Et parce que vous n'avez pas défini le Booléen Annuler sur Vrai, Excel continue avec la fermeture.
À l'étape 4, vous fermez simplement l'instruction Select Case. Chaque fois que vous instanciez un cas de sélection, vous devez le fermer avec une sélection de fin correspondante.
Comment utiliser la macro
Pour implémenter cette macro, vous devez la copier et la coller dans la fenêtre du code d'événement Workbook_BeforeClose. La mise en place de la macro lui permet de s'exécuter chaque fois que vous essayez de fermer le classeur:
-
Activez Visual Basic Editor en appuyant sur Alt + F11.
-
Dans la fenêtre du projet, trouvez le nom de votre projet / classeur et cliquez sur le signe plus à côté pour voir toutes les feuilles.
-
Cliquez sur ThisWorkbook.
-
Dans la liste déroulante Événement, sélectionnez l'événement BeforeClose.
-
Tapez ou collez le code dans le nouveau module.
Entrez votre code dans l'événement Workbook BeforeClose.
