Rebonjour,
J'ai un soucis pour fermer mon classeur. J'ai trouvé un code et j'essaye en vain depuis 5 jours de le mettre en marche.
J'ai des pistes pour résoudre mais je n'y arrive pas.
Mon code me permet de fermer mon classeur excel par le biais d'un bouton.
On doit avant de fermer le fichier, cacher en xlveryhidden toutes les feuilles sauf la feuille "starting notice" et ensuite enregistrer.
Problème c'est que rien ne s'enregistre et mes feuilles restent affichées.
J'ai une macro hidesheets ('permet de gerer l'etat visible des feuilles'), qui se trouvent après "ThisWorkbook.Close".
Lorsque je mets "hidesheets" avant "ThisWorkbook.Close" ça marche.
Lorsque je mets "hidesheets" après "ThisWorkbook.Close" ça marche pas.
Alors je suspect le "ThisWorkbook.Close".
code qui permet de gérer le bouton pour sortir du fichier
code qui fermer le classeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub Rectangle1_QuandClic() ClosingThisFile End Sub
code sur l'evenement Workbook_BeforeClose
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub ClosingThisFile() MyFileIsOpen = False ThisWorkbook.Close End Sub
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'une partie de ce qui suit ne sert qu'a gerer le passage IsAddin = True de ce fichier si 'l'utilisateur veut sauver avant de fermer 'Pour cela on vas substituer au message d'excel notre propre message ce qui 'permet de gerer le cas du bouton cancel If MyFileIsOpen = True Then Exit Sub Dim Reponse As VbMsgBoxResult If ThisWorkbook.Saved = True Then 'retour a la normale Defaut 'on vide la classe Call XlAppli.EmptyClass Else Cancel = True 'ici notre message perso: On Error Resume Next Reponse = MsgBox("Voulez-vous sauver les modifications effectuées dans '" & ActiveWorkbook.Name & "' ? ", vbExclamation + vbYesNoCancel) Select Case Reponse Case vbYes 'l'utilisateur veut sauver avant de fermer le fichier HideSheets Application.EnableEvents = False 'pour eviter de passer par l'evenement Workbook_BeforeSave ThisWorkbook.IsAddin = True ThisWorkbook.Save ThisWorkbook.Saved = True Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Cancel = False Case vbNo 'l'utilisateur ne veut pas sauver. Pour cela: 'retour a la normale Defaut 'on vide la classe Call XlAppli.EmptyClass 'on laisse croire excel que le fichier a été sauvé ThisWorkbook.Saved = True 'on autorise la fermeture Cancel = False End Select ' si cancel rien ne ce passe End If End Sub
Code pour masquer feuilles
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub HideSheets() 'Cache toute les feuilles a l'exception de la feuille starting notice 'j'ai laissé cette option qui fonctionne si ce fichier n'est pas enregistré avec 'l'option IsAddin a vrai. Dans le cas contraire cela ne sert a rien Dim MySheet As Worksheet Application.ScreenUpdating = False Application.DisplayAlerts = False If Sheets("starting notice").Visible = xlVeryHidden Then Sheets("starting notice").Visible = True For Each MySheet In ThisWorkbook.Worksheets If Not MySheet.Name = "starting notice" Then MySheet.Visible = xlVeryHidden End If Next End SubEnd Sub
Partager