Parfois, nous ne souhaitons pas permettre aux utilisateurs de fermer un classeur avant d’y entrer des données spécifiques. Dans ce cas, Excel doit empêcher la fermeture du classeur tant que la cellule spécifiée n’est pas remplie avec les données.
Comment ca marche?
Le code est déclenché par l’événement BeforeClose du classeur. Lorsque vous fermez le classeur, cela déclenchera un événement qui déclenchera le code correspondant. La macro vérifiera si la cellule indiquée (dans ce cas C7) est vide. Si tel est le cas, le processus de fermeture sera annulé. Si la cellule C7 n’est pas vide, le classeur sera enregistré et fermé.
Le code est déclenché par l’événement BeforeClose du classeur. Lorsque vous fermez le classeur, cela déclenchera un événement qui déclenchera le code correspondant. La macro vérifiera si la cellule indiquée (dans ce cas C7) est vide. Si tel est le cas, le processus de fermeture sera annulé. Si la cellule C7 n’est pas vide, le classeur sera enregistré et fermé.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub BeforeClose (Fermer As Boolean)
'Étape 1: Vérifiez si la cellule C7 est vide
If Sheets("Feuil1").Range("C7").Value = "" Then
'Étape 2: Si vide, annule la fermeture et avertit l'utilisateur
Fermer = True
MsgBox "La cellule C7 ne peut pas être vide"
'Étape 3: S'il n'est pas vide, enregistrez et fermez
Else
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub
Private Sub BeforeClose (Fermer As Boolean)
'Étape 1: Vérifiez si la cellule C7 est vide
If Sheets("Feuil1").Range("C7").Value = "" Then
'Étape 2: Si vide, annule la fermeture et avertit l'utilisateur
Fermer = True
MsgBox "La cellule C7 ne peut pas être vide"
'Étape 3: S'il n'est pas vide, enregistrez et fermez
Else
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub
Private Sub BeforeClose (Fermer As Boolean) 'Étape 1: Vérifiez si la cellule C7 est vide If Sheets("Feuil1").Range("C7").Value = "" Then 'Étape 2: Si vide, annule la fermeture et avertit l'utilisateur Fermer = True MsgBox "La cellule C7 ne peut pas être vide" 'Étape 3: S'il n'est pas vide, enregistrez et fermez Else ActiveWorkbook.Close SaveChanges:=True End If End Sub
Commentaires:
1. À la première étape, le contenu de la cellule C7 est vérifié.
2. S’il est vide, la deuxième étape est exécutée, c’est-à-dire l’annulation du processus de fermeture du classeur. Ceci est fait en passant la valeur True à la variable logique Fermer. Dans la deuxième étape, une boîte de message est également activée pour informer l’utilisateur de sa motivation (peut-être ne peut-il pas être aussi tranchant).
3. Si la cellule C7 n’est pas vide, le classeur est enregistré et fermé.
Comment utiliser la macro?
Pour implémenter cette macro, copiez et collez son code dans la fenêtre Code, en l’ajoutant à la méthode de gestion de l’événement Workbook_BeforeClose. En la plaçant ici, vous pouvez exécuter la macro chaque fois qu’un utilisateur souhaite fermer le classeur.
1. Utilisez les touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, recherchez le bon projet ou classeur et cliquez sur le signe + en regard de celui-ci. Toutes les feuilles seront affichées.
3. Cliquez sur ThisWorkbook.
4. Sélectionnez l’événement BeforeClose dans la liste déroulante d’évement.
Tapez ou collez le code dans la fenêtre Code et affectez-le à l’événement Workbook_BeforeClose.
5. Tapez ou collez le code dans le module nouvellement créé
2. S’il est vide, la deuxième étape est exécutée, c’est-à-dire l’annulation du processus de fermeture du classeur. Ceci est fait en passant la valeur True à la variable logique Fermer. Dans la deuxième étape, une boîte de message est également activée pour informer l’utilisateur de sa motivation (peut-être ne peut-il pas être aussi tranchant).
3. Si la cellule C7 n’est pas vide, le classeur est enregistré et fermé.
Comment utiliser la macro?
Pour implémenter cette macro, copiez et collez son code dans la fenêtre Code, en l’ajoutant à la méthode de gestion de l’événement Workbook_BeforeClose. En la plaçant ici, vous pouvez exécuter la macro chaque fois qu’un utilisateur souhaite fermer le classeur.
1. Utilisez les touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, recherchez le bon projet ou classeur et cliquez sur le signe + en regard de celui-ci. Toutes les feuilles seront affichées.
3. Cliquez sur ThisWorkbook.
4. Sélectionnez l’événement BeforeClose dans la liste déroulante d’évement.
Tapez ou collez le code dans la fenêtre Code et affectez-le à l’événement Workbook_BeforeClose.
5. Tapez ou collez le code dans le module nouvellement créé