Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sortir de sub auto_close

4 réponses
Avatar
delta7253
bonjour,

Au moment de quitter un fichier excel, je vérifie certaines saisies.
Pour cela, dans la macro auto_close j'ai mis un "branchement" vers une macro
pour retourner dans le fichier si les saisies ne sont pas correctes.
Et ça ne marche pas !
J'ai mis un msgbox avant et un après le "branchement". Les deux s'affichent
et ........mon fichier se ferme.
Y a t'il une solution pour sortir de auto_close ?


Sub auto_close()
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
retour_dans_le_fichier ' macro ci-dessous
MsgBox ("toto")
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub

Sub retour_dans_le_fichier()
Range("B12").Select
End Sub


Merci de votre attention.

4 réponses

Avatar
isabelle
bonjour ,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
Cancel = True
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub


isabelle


bonjour,

Au moment de quitter un fichier excel, je vérifie certaines saisies.
Pour cela, dans la macro auto_close j'ai mis un "branchement" vers une macro
pour retourner dans le fichier si les saisies ne sont pas correctes.
Et ça ne marche pas !
J'ai mis un msgbox avant et un après le "branchement". Les deux s'affichent
et ........mon fichier se ferme.
Y a t'il une solution pour sortir de auto_close ?


Sub auto_close()
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
retour_dans_le_fichier ' macro ci-dessous
MsgBox ("toto")
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub

Sub retour_dans_le_fichier()
Range("B12").Select
End Sub


Merci de votre attention.




Avatar
LSteph
Bonsoir,

En complément...

On utilise plus guère cet auto_close ni auto_open.
Comme indiqué par Isabelle utilises plutôt le beforeclose.
Pour mettre ce code regarde dans VBE dans explorateur de projet
qui s'affiche normalement sur ta gauche, dans ton projet tu trouves
ThisWorkbook, doubleclique dessus, le module de code propre au classeur
s'affiche avec par défaut la procèdure dévolue à l'évennement open du
classeur.
Remplace le par le code d'Isabelle. C'est grâce à Cancel qu'on évite la
fermeture.

Pour info:
Dans le déroulant en haut à droite du module tu trouveras la liste des
évennements de classeur.

Cordialement.

--
lSteph

bonjour,

Au moment de quitter un fichier excel, je vérifie certaines saisies.
Pour cela, dans la macro auto_close j'ai mis un "branchement" vers une macro
pour retourner dans le fichier si les saisies ne sont pas correctes.
Et ça ne marche pas !
J'ai mis un msgbox avant et un après le "branchement". Les deux s'affichent
et ........mon fichier se ferme.
Y a t'il une solution pour sortir de auto_close ?


Sub auto_close()
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
retour_dans_le_fichier ' macro ci-dessous
MsgBox ("toto")
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub

Sub retour_dans_le_fichier()
Range("B12").Select
End Sub


Merci de votre attention.




Avatar
delta7253
Désolé d'avoir trainé, je viens seulement de tester ta formule. Avec le
complément de Steph (ci-dessous), c'est impec.
Merci beaucoup.



"isabelle" a écrit dans le message de news:

bonjour ,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
Cancel = True
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub


isabelle


bonjour,

Au moment de quitter un fichier excel, je vérifie certaines saisies.
Pour cela, dans la macro auto_close j'ai mis un "branchement" vers une
macro pour retourner dans le fichier si les saisies ne sont pas
correctes.
Et ça ne marche pas !
J'ai mis un msgbox avant et un après le "branchement". Les deux
s'affichent et ........mon fichier se ferme.
Y a t'il une solution pour sortir de auto_close ?


Sub auto_close()
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
retour_dans_le_fichier ' macro ci-dessous
MsgBox ("toto")
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub

Sub retour_dans_le_fichier()
Range("B12").Select
End Sub


Merci de votre attention.




Avatar
delta7253
merci beaucoup, le "complément" m'a bien servi en plus de la formule
d'Isabelle.
j'abandonne auto_open et auto_close.


"LSteph" a écrit dans le message de news:

Bonsoir,

En complément...

On utilise plus guère cet auto_close ni auto_open.
Comme indiqué par Isabelle utilises plutôt le beforeclose.
Pour mettre ce code regarde dans VBE dans explorateur de projet
qui s'affiche normalement sur ta gauche, dans ton projet tu trouves
ThisWorkbook, doubleclique dessus, le module de code propre au classeur
s'affiche avec par défaut la procèdure dévolue à l'évennement open du
classeur.
Remplace le par le code d'Isabelle. C'est grâce à Cancel qu'on évite la
fermeture.

Pour info:
Dans le déroulant en haut à droite du module tu trouveras la liste des
évennements de classeur.

Cordialement.

--
lSteph

bonjour,

Au moment de quitter un fichier excel, je vérifie certaines saisies.
Pour cela, dans la macro auto_close j'ai mis un "branchement" vers une
macro pour retourner dans le fichier si les saisies ne sont pas
correctes.
Et ça ne marche pas !
J'ai mis un msgbox avant et un après le "branchement". Les deux
s'affichent et ........mon fichier se ferme.
Y a t'il une solution pour sortir de auto_close ?


Sub auto_close()
If valid_faite = 0 Then
MsgBox ("Vous devez valider votre saisie avant de fermer Excel")
retour_dans_le_fichier ' macro ci-dessous
MsgBox ("toto")
End If
'on reprotège la feuille avant de sortir
Worksheets("feuil1").Protect Password:="xxxxx"
End Sub

Sub retour_dans_le_fichier()
Range("B12").Select
End Sub


Merci de votre attention.