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 :
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 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
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 !)!
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
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
Partager