Before save et enregistrer sous
Bonjour à tous,
Je bloque sur l’exécution d'une macro avec l'évènement enregistrer sous. Le but de la macro est de fermer toutes les feuilles sauf celle nommé Démarrer, puis une fois enregistrer de retourner sur la feuille active. Le but étant donc de toujours commencer par la feuille Démarrer à l'ouverture du fichier, sur cette feuille ce trouve un rappel afin de bien penser à activer les macros. La procédure ne peut donc pas être placer dans le workbook_open mais doit bien être placé dans le before_save
Voici le code :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim f As Worksheet
Application.ScreenUpdating = False
nomfeuil = ThisWorkbook.ActiveSheet.Name
For Each f In ThisWorkbook.Worksheets
If f.Name = "Démarrer" Then
f.Visible = True
Else
f.Visible = False
End If
Next f
Application.ScreenUpdating = True
End SubPuis le code suivant pour remettre la feuille
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim f As Worksheet
If Success = True Then
Application.ScreenUpdating = False
ThisWorkbook.Sheets(nomfeuil).Visible = True
For Each f In ThisWorkbook.Worksheets
If f.Name = nomfeuil Then
f.Visible = True
Else
f.Visible = False
End If
Next f
Application.ScreenUpdating = True
MsgBox ("Le fichier a bien été enregistré !")
End If
End Subnomfeuil est bien déclarer avec option explicit
Le problème est que lorsque l'utilisateur clique sur enregistrer sous (ce que je veux continuer de rendre possible). S'il ne vas pas jusqu'au bout de la procédure et sélectionne un fichier pour enregisrer sous mais finalement quitte la procédure sans enregistrer, la macro se déclenche quand même et il se retrouve sur la feuille démarrer.
Si j'enlève If sucess = true alors effectivement l'utilisateur repassera sur la feuille ou il était avant. Néanmoins je me dit qu'il doit bien y avoir une façon de faire plus pro avec if SaveAsUi = true mais je n'arrive pas à trouver comment faire sachant que cela se déclenche au moment de la sélection du fichier enregistrer sous et non au moment de cliquer sur enregistrer.
Avez-vous une idée ?
D'avance merci :)
Bonjour,
Juste une question : vous écrivez :
La procédure ne peut donc pas être placer dans le workbook_open mais doit bien être placé dans le before_save
Pourquoi n'est-il pas possible de refermer toutes les feuilles sauf la feuille de démarrage à l'ouverture du fichier ? Comme c'est techniquement possible, qu'est-ce qui vous empêche de le faire ?
Bonjour Optimix,
Le but étant d'afficher un message sur la feuille nommé "Démarrer" pour que l'utilisateur pense à activer les macro, si je le place dans workbook_open voici ce qu'il va ce passer :
- Un utilisateur navigue sur la page nommé Feuil2, il enregistre sous
- Un autre utilisateur va sur le fichier enregistré sous, les macros sont donc par défaut désactiver, lorsqu'il va ouvrir le fichier aucune macro ne se déclenche, il se retrouve donc sur la Feuil2 dernièrement enregistré et non sur la feuille "Démarrer"