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 Sub

Puis 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 Sub

nomfeuil 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"

Rechercher des sujets similaires à "before save enregistrer"