cacher la fenêtre d'un seul classeur

RONIBO

XLDnaute Impliqué
Bonjour le forum,

J'aimerai cacher la fenêtre d'un classeur excel, faire en sorte que l'userform s'ouvre au démarrage du fichier excel, par contre des que j'ouvre un autre fichier excel la fenêtre réapparait.

Ou le contraire, dès que j'ai un classeur j'ai un classeur ouvert, puis j'applique application.visible=false, tout est masqué.

Comment utiliser Application.visible=false pour un seul classeur?

merci d'avance
 

Pièces jointes

  • Classeur1.xlsm
    14 KB · Affichages: 35
  • Classeur1.xlsm
    14 KB · Affichages: 39

PMO2

XLDnaute Accro
Re : cacher la fenêtre d'un seul classeur

Bonjour,

Essayez avec
Code:
Private Sub CommandButton1_Click()
ThisWorkbook.Windows(1).Visible = True
End Sub


Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = False
UserForm1.Show 0
End Sub
 

PMO2

XLDnaute Accro
Re : cacher la fenêtre d'un seul classeur

Bonjour,

Ce n'est pas aussi simple qu'il y paraît.
On est obligé de passer par une usine à gaz pour détruire un processus persistant d'Excel (voir le gestionnaire des tâches).

Voilà la démarche qui fonctionne chez moi :

1) Créez un module de classe Classe1 et copiez le code suivant dans sa fenêtre de code
Code:
Public WithEvents AppXL As Application

Private Sub AppXL_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Application.Workbooks.Count = 2 Then
  Application.Visible = False
  If UserFormVisible = False Then UserForm1.Show vbModeless
Else
  ThisWorkbook.Windows(1).Visible = False
End If
End Sub

2) Copiez le code suivant dans un module Standard
Code:
Public AppClass As New Classe1
Public UserFormVisible As Boolean

3) Copiez le code suivant dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Open()
Set AppClass.AppXL = Application
If Application.Workbooks.Count = 1 Then
  Application.Visible = False
Else
  ThisWorkbook.Windows(1).Visible = False
End If
UserForm1.Show vbModeless
End Sub

4) Dans UserForm1 (avec 3 CommandButton 1,2,3), copiez le code suivant
Code:
Private Sub UserForm_Initialize()
UserFormVisible = True
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim Rep%
'---
If Application.Workbooks.Count = 1 Then
  If Application.Visible = False Then
    Rep% = MsgBox(prompt:="La fermeture du UserForm implique que l'application Excel soit fermée." & vbLf & _
    "Voulez-vous réellement fermer l'application Excel ?", Buttons:=vbOKCancel)
    If Rep% = vbOK Then
      If Not AppClass Is Nothing Then Set AppClass = Nothing
      ThisWorkbook.Save
      Application.Quit
    Else
      Cancel = True
    End If
  End If
Else
  UserFormVisible = False
End If
End Sub

Private Sub CommandButton1_Click()
Application.Visible = True
ThisWorkbook.Windows(1).Visible = True
End Sub

Private Sub CommandButton2_Click()
If Application.Workbooks.Count = 1 Then
  Application.Visible = False
Else
  ThisWorkbook.Windows(1).Visible = False
End If
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Ouvrez le classeur et plusieurs autres classeurs pour voir ce qui se passe.
 

Pièces jointes

  • Cacher la fenêtre d'un classeur et ne laisser visible que son UserForm.xlsm
    23.7 KB · Affichages: 53

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal