Sheet.Visible qui ne fonctionne pas depuis UserForm.
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:
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:
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