XL 2013 Ouvrir UserForm et cacher le classeur

anass1

XLDnaute Junior
Bonjour,

J'ai utilisé ce code pour ouvrir seulement le UserForm et cacher le classeur (Seulement concerné);

SVP, Je veux vérifier ce code. Est-ce efficace ?

Merci.

thisworkbook :
VB:
Private Sub Workbook_Open()
On Error Resume Next
Set AppClass.AppXL = Application
If Application.Workbooks.Count = 1 Then
  Application.Visible = False
Else
  ThisWorkbook.Windows(1).Visible = False
End If
UserForm1.Show vbModeless
If Err Then ThisWorkbook.Saved = True: If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
UserForm
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim FM
If Application.Workbooks.Count = 1 Then
  If Application.Visible = False Then
    FM = MsgBox(prompt:=" " & vbLf & _
    "Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
    If FM = vbOK Then
      If Not AppClass Is Nothing Then Set AppClass = Nothing
'      ThisWorkbook.Save
      Application.Quit
     Else
       Cancel = True
    End If
  End If
 Else
 If Application.Visible = True Then
    FM = MsgBox(prompt:=" " & vbLf & _
    "Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
    If FM = vbOK Then
      If Not AppClass Is Nothing Then Set AppClass = Nothing
'      ThisWorkbook.Save
      ThisWorkbook.Close
     Else
       Cancel = True
    End If
  End If
End If
End Sub
Module
Code:
Option Explicit

Public AppClass As New Classe1
Public UserFormVisible As Boolean
classe module
Code:
Option Explicit
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
 

Pièces jointes

  • v1.xlsm
    19.1 KB · Affichages: 29

patricktoulon

XLDnaute Barbatruc
re
tiens comme ça a l'arrache
VB:
Private Sub UserForm_Activate()
    Application.Visible = False
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim FM
    FM = MsgBox(prompt:=" " & vbLf & _
                        "Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
    If FM = vbOK Then
        ThisWorkbook.Save
        If Workbooks.Count = 1 Then Application.Quit Else Application.Visible = True: ThisWorkbook.Close
    Else
        Cancel = True
    End If
End Sub
et vire moi ton module classe ;)
 
Dernière édition:

pat90

XLDnaute Nouveau
re
tiens comme ça a l'arrache
VB:
Private Sub UserForm_Activate()
    Application.Visible = False
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim FM
    FM = MsgBox(prompt:=" " & vbLf & _
                        "Voulez-vous réellement fermer ?", Buttons:=vbOKCancel)
    If FM = vbOK Then
        ThisWorkbook.Save
        If Workbooks.Count = 1 Then Application.Quit Else Application.Visible = True: ThisWorkbook.Close
    Else
        Cancel = True
    End If
End Sub
et vire moi ton module classe ;)
 

pat90

XLDnaute Nouveau
Bonjour Monsieur....je suis débutant en VBA j'ai un petit souci similaire sur une manipulation.A savoir que je veux également masquer à la demande ma feuille DONNEES,mais que mes deux "userform restent visibles...et tout cela par mon bouton "Afficher/Masquer les données. Actuellement ,dans mon fichier,le bouton est actif,mais quand je veux "masquer"....il ne me reste qu'un seul userform. Pourriez vous m'aider?Je sèche!!Merci par avance. Fichier joint.
 

Pièces jointes

  • ESSAI___AFFICHER-MASQUER LES DONNEES - Copie.xlsm
    18.5 KB · Affichages: 27

Dan

XLDnaute Barbatruc
Bonjour,

Personnellement j'opterais pour mettre l'userform en plein écran plutôt que de cacher Excel. Si vous fermez votre USF et/ou que par hasard vous avez un plantage, vous ne savez plus si Excel est ouvert ou pas.
Donc vous allez essayer de relancer votre fichier ou un autre alors qu'excel restera invisible. Faites des tests avant si vous voulez absolument utiliser cette instruction mais de mon avis et expérience vécue, c'est un peu jouer aux apprentis sorcier que d'utiliser cette instruction.
 

pat90

XLDnaute Nouveau
Bonjour,

Personnellement j'opterais pour mettre l'userform en plein écran plutôt que de cacher Excel. Si vous fermez votre USF et/ou que par hasard vous avez un plantage, vous ne savez plus si Excel est ouvert ou pas.
Donc vous allez essayer de relancer votre fichier ou un autre alors qu'excel restera invisible. Faites des tests avant si vous voulez absolument utiliser cette instruction mais de mon avis et expérience vécue, c'est un peu jouer aux apprentis sorcier que d'utiliser cette instruction.
Bonjour,merci pour votre réponse.....mais dans l'exemple que j'ai posté,le "petit userform"sera par la suite mon tableau de bord,et le grand "userform"...deviendra ma table ..ou mes instructions seront affichées.Dans le cas présent que dois je éventuellement apporté comme code supplémentaire pour que mes deux "userform" reste apparents??à l'operation "masquer/afficher".Bien cordialement.
 

Discussions similaires