XL 2010 Contourner BeforeSave

Romain31

XLDnaute Occasionnel
Bonjour à tous,

J'ai un formulaire avec des champs obligatoires à remplir.
Une procédure évènementielle Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean empêche l'enregistrement si certains champs sont vides.

If ThisWorkbook.Sheets("Fiche").Range("B22") = "" Then
Cancel = True
MsgBox "ENREGISTREMENT IMPOSSIBLE - Le domaine fonctionnel n'est pas indiqué"

Existe-t-il un moyen de désactiver temporairement cette procédure (par code VBA) pour faire des modifications (comme effacer les champs obligatoires, par exemple).
J'avais pensé aussi à ouvrir Excel sans activer les macros avec la touche Maj mais cela ne fonctionne pas.

Merci beaucoup et très bonne journée
 

youky(BJ)

XLDnaute Barbatruc
Bonjour Romain,
2 solutions
1)la plus simple dans l'onglet Développeur cliquer dans l'équerre(mode création)
Hop plus d'événements ou macros. Tu peux enregistrer et ensuite recliquer sur l'équerre
2) à taper dans la fenêtre execution et valider par Enter
Application.EnabledEvents=False ensuite bien penser à remettre à True
Bruno
 

Romain31

XLDnaute Occasionnel
Bonjour Bruno,

Merci beaucoup pour ta réponse, j'avais complètement zappé le mode création.
Cela fonctionne mais je suis obligé d'aller dans l'éditeur VBA, ce qui n'est pas grave pour moi mais pas forcément évident, ni élégant pour un utilisateur.

Concernant ta deuxième solution, Application.EnabledEvents=False je vais regarder cela.
Un utilisateur pourrait lancer une macro (qui ferait telle ou telle action) avec enregistrement du fichier. Une fois terminé, il faudrait que Private Sub Workbook_BeforeSave reprenne la main.

Romain
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Romain31, youky,

tu as écrit : « je suis obligé d'aller dans l'éditeur VBA, ce qui n'est pas grave
pour moi mais pas forcément évident, ni élégant pour un utilisateur. »

autre solution, si t'acceptes que l'utilisateur aille sur l'onglet Développeur :


Image.jpg
soan
 

Romain31

XLDnaute Occasionnel
Bonjour Soan,

Merci mais je n'ai pas trop envie de faire un mode d'emploi.
Je préfère un fichier avec des boutons qui exécutent des actions sans être bloquées par cette procédure de fermeture.
En fait, une macro qui désactive cette fameuse macro.
 

soan

XLDnaute Barbatruc
Inactif
ah, ok ; dans ce cas, c'est la solution du Application.EnableEvents = False
mais surtout, ne pas oublier de réactiver les événements dès que possible :
Application.EnableEvents = True.

--------------------------------------------------------------------------------

@youky(BJ) : attention, y'a un d en trop pour Enabled :

Image.jpg

soan
 
Dernière édition:

Statistiques des forums

Discussions
312 307
Messages
2 087 096
Membres
103 468
dernier inscrit
TRINITY