VBA - Workbook_BeforeClose / plusieurs requêtes

  • Initiateur de la discussion Initiateur de la discussion red-69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

red-69

XLDnaute Nouveau
Bonjour à tous,

Je vous soumets un petit problème sur lequel je bloque pour le moment.

J'essaye de mettre en place un formulaire pour mon association pour laquelle il est nécessaire que les utilisateurs acceptent les macros.
J'ai trouvé sur les forums et en me dépatouillant tout seul le code qui me faut pour forcer l'acceptation des macros.

Cependant j'ai également une autre requête qui est l'obligation d'inscrire dans la cellule B33 de la feuille formulaire, une date inférieure ou égale à J+ 1an.

Le problème c'est que lorsque j'effectue cette manipulation, j'ai bien mes fenêtres d'alertes qui apparaissent mais je retombe immédiatement sur l'onglet Info. Du coup, il n'est plus possible de renseigner la feuille formulaire.

Auriez-vous des infos qui pourraient m'aider ?

Ci-dessous le code que j'utilise, et en pièce jointe le formulaire en question.

Par avance, merci.


Code:
Private Sub Workbook_Open()
Sheets("Formulaire").Visible = True
Sheets("Info").Visible = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.ScreenUpdating = False
Sheets("Info").Visible = True
Sheets("Formulaire").Select
ActiveWindow.SelectedSheets.Visible = False


    If Sheets("Formulaire").Range("B33").Value > Now() + 366 Then
        MsgBox "Impossible ! Maximum d'un an dépassée."
        Cancel = True
    End If
    
    If Sheets("Formulaire").Range("B33").Value = "" Then
        MsgBox "Saisie incomplète !"
        Cancel = True
    End If

ActiveWorkbook.Save
End Sub
 

Pièces jointes

Re : VBA - Workbook_BeforeClose / plusieurs requêtes

Bonjour,

Une piste avec votre code modifié
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Sheets("Formulaire").Range("B33").Value > Now() + 366 Then
        MsgBox "Impossible ! Maximum d'un an dépassée."
        Cancel = True
    End If
    
    If Sheets("Formulaire").Range("B33").Value = "" Then
        MsgBox "Saisie incomplète !"
        Cancel = True
    End If
If Cancel Then
  [b33].Select
  Exit Sub
End If

Application.ScreenUpdating = False
Sheets("Info").Visible = True
Sheets("Formulaire").Select
ActiveWindow.SelectedSheets.Visible = False

ActiveWorkbook.Save
End Sub
 
Re : VBA - Workbook_BeforeClose / plusieurs requêtes

Bonjour PMO2,

Merci d'avoir jeté un oeil.

Effectivement le code que vous fournissez correspond à ce que je souhaitais.
Pourriez-vous m'expliquer l'utilisation du :

Code:
If Cancel Then
  [b33].Select
  Exit Sub
End If

Merci
 
Re : VBA - Workbook_BeforeClose / plusieurs requêtes

Bonjour,

Quelques éclaircissements
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'--- Comme vous avez dû le remarquer, j'ai déplacé les
'--- instructions de conditions d'annulation en tête de
'--- la procédure puisqu'elles régissent la suite ou la
'--- non suite du programme
    If Sheets("Formulaire").Range("B33").Value > Now() + 366 Then
        MsgBox "Impossible ! Maximum d'un an dépassée."
        Cancel = True
    End If
    
    If Sheets("Formulaire").Range("B33").Value = "" Then
        MsgBox "Saisie incomplète !"
        Cancel = True
    End If
    
'--- Si Cancel = True (annulation de la procédure)
If Cancel Then
  '---quant à faire, autant sélectionner la cellule B33 pour une meilleure signalisation à l'utilisateur
  [b33].Select
  '--- puis on annule la suite de la procédure en provoquant une sortie immédiate par l'instruction Exit Sub qui suit
  Exit Sub
End If

'--- Les instructions suivantes ne seront pas réalisées si Cancel = True et que le programme passe par Exit Sub
Application.ScreenUpdating = False
Sheets("Info").Visible = True
Sheets("Formulaire").Select
ActiveWindow.SelectedSheets.Visible = False

ActiveWorkbook.Save
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
169
Réponses
4
Affichages
461
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
171
Réponses
3
Affichages
298
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Réponses
2
Affichages
511
Réponses
3
Affichages
665
Réponses
0
Affichages
566
Retour