Bonsoir à tous,

J'ai un problème qui me turlupine, je ne vois vraiment pas d'où ça pourrait venir :

J'ai un classeur qui nécessite impérativement que les macros soient activées pour fonctionner, et une fois que c'est le cas, Application.Visible = False et on fait tout en UserForms...
Dans les événements Workbook_BeforeSave et WorkBook_AfterSave, j'ai respectivement :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Dim ShActive As Worksheet
Dim sheet As Worksheet
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set ShActive = ThisWorkbook.ActiveSheet
Call PageAccueil(True)
End Sub
 
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Call PageAccueil(False)
ShActive.Activate
End Sub
Et la macro PageAccueil cache toutes les pages sauf l'accueil (page comprenant uniquement "activez les macros sinon ça marche pas"... en gros) ou les affiche toutes sauf l'accueil suivant la valeur de "Afficher".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub PageAccueil(Afficher As Boolean)
 
Select Case Afficher
    Case True
        Sheets("Accueil").Visible = xlSheetVisible
        Sheets("Accueil").Activate
        For Each sheet In ThisWorkbook.Sheets
            If sheet.Name <> "Accueil" Then sheet.Visible = xlSheetVeryHidden
        Next sheet
 
    Case False
        For Each sheet In ThisWorkbook.Sheets
            sheet.Visible = xlSheetVisible
        Next sheet
        Sheets("Accueil").Visible = xlSheetVeryHidden
 
End Select
 
End Sub
Mon étonnement provient du fait que la macro fonctionne parfaitement si je fais Ctrl+S, mais quand je ferme mon userform principal qui contient un Workbook.Save, alors cela ne fonctionne pas... plus curieux encore, le code est lu comme il faut (pas à pas, voire si je remplace les sheet.visible par un msgbox, ça marche !)!
J'ai essayé de déplacer le code dans un module, de glisser des doevents, sleep, wait, Application.EnableEvents = True... Rien n'y fait.

Je rappelle juste que le code est bien lu mais les sheets ne se masquent (ni apparait, pour la cas de la sheet("Accueil") absolument pas, pas d'erreur, rien.
Du coup, si j'ouvre le fichier sur un autre PC ou si les macros ne sont pas activées par défaut, alors au lieu de tomber sur la page d'accueil, on tombe sur la dernière page active ce qui est critique pour moi car les sheets sont uniquement des bases de données...

Si vous avez une idée ou une solution, je suis très preneur !!

Merci d'avance.

Quentin