Private Sub Workbook_Open() Form1.show() End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPeux tu en une phrase nous dire ce dont tu as besoin ?
la première qui s'exécute (Workbook_open) , affiche ta fenêtre de dialogue PUIS désactive les macros
ouvre donc un classeur qui aboutit directement à cette boîte ===>> active les macros ===>> regarde ce qu'il y a dans Workbook_open
Private Sub Workbook_Open() Dim CmdBs As CommandBar 'si les macros on ete activées les feuilles cachées seront affichées 'dans le cas contraire elle resteront cachées et un message d'erreur apparaitra. '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 Application.Run ("Opening") 'desactive la barre "Boîte à outils Contrôles" For Each CmdBs In Application.CommandBars Select Case CmdBs.Name Case "Control Toolbox", "Boîte à outils Contrôles" 'cas Anglais ou Français CmdBs.Enabled = False End Select Next 'initialisation de la classe Set XlAppli.XL = Excel.Application Call XlAppli.InitClass 'on interdit l'utilisation des racourcis Alt+F11 et Alt+F8 Application.OnKey "%{F11}", "MessageDeLimitation" Application.OnKey "%{F8}", "MessageDeLimitation" DoEvents 'ce fichier a été sauvé avec l'option IsAddin a vrai donc on le passe a false 'pour lui redonner toutes ses fonctions de Workbook classic If ThisWorkbook.IsAddin True Then ThisWorkbook.IsAddin False 'si le VBE est ouvert on le ferme mais pour que cela fonctionne l'option 'de securite "Faire confiance au projet Visual Basic" doit etre cochée On Local Error Resume Next If Application.VBE.MainWindow.Visible True Then Application.VBE.MainWindow.Visible False If Not Err = 0 And CLng(Application.Version) > 9 Then ModifSLevel MyFileIsOpen = True End Sub
Sub Opening() Dim MySheet As Worksheet 'Affiche toute les feuilles a l'exception de la feuille starting notice Application.ScreenUpdating = False Application.DisplayAlerts = False ThisWorkbook.IsAddin = False For Each MySheet In ThisWorkbook.Worksheets If Not MySheet.Name = "starting notice" Then MySheet.Visible = True End If Next If Sheets("starting notice").Visible True Then Sheets("starting notice").Visible xlVeryHidden Application.ScreenUpdating = True Application.DisplayAlerts = True Application.EnableEvents = True ThisWorkbook.Saved = True End Sub
Ps : Ucfoutu as tu une petite idée sur comment se fait il que le fichier propose toujours la fenêtre dès son ouverture ? Et cela sans même avoir accepté les macros. Je suis curieux de comprendre le truc.
Public admis As Boolean 'Variable publique pour gérer le masquage du classeur
Private Sub CommandButton1_Click() ThisWorkbook.Close 'Bouton qui permet de fermer le classeur ET le fichier Excel en un seul coup End Sub
Private Sub Workbook_Open() admis = True 'Variable publique UserForm1.Show 'UserForm qui contient un bouton pour quitter Excel SANS enregistrer !!! ThisWorkbook.Windows(1).Visible = True 'Pour afficher le classeur End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Windows(1).Visible = False 'Pour masquer le classeur admis = False 'Variable publique 'DisplayAlerts = False 'ActiveWorkbook.Close 'savechanges:=False 'Application.Quit 'DisplayAlerts = True End Sub Private Sub Workbook_WindowActivate(ByVal Wn As Window) If admis = False Then ThisWorkbook.Windows(1).Visible = False 'Pour masquer le classeur en permanance une fois celui ci masqué End If End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer permis = True ThisWorkbook.Close savechanges:=False DoEvents permis = False End Sub Private Sub CommandButton2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour enregistrer permis = True ThisWorkbook.Save DoEvents permis = False End Sub
Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Not permis Then Cancel = True UserForm9.Show 'Affiche l'UserForm9 End If End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not permis Then Cancel = True UserForm9.Show 'Affiche l'UserForm9 End If Application.Quit End Sub