Problème à l'ouverture

Bonjour,

Quand je souhaite ouvrir un 2ème ThisWorkbook du 1er classeur:

Private Sub Workbook_Deactivate()

If ThisWorkbook.Name = "JAZZYPOP.xlsm" Then
    On Error Resume Next
    Application.Visible = True
    Application.Quit
End If

End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False

If ThisWorkbook.Name = "JAZZYPOP.xlsm" Then
    Application.Visible = False
    With Application.Windows("JAZZYPOP.xlsm")
            .WindowState = xlNormal
            .Width = 100
            .Height = 100
            .Top = -100
            .Left = -100
    End With
End If

UserForm2.Show
UserForm2.StartUpPosition = 2
Application.ScreenUpdating = True

End Sub

Auriez-vous une solution ? Merci

Bonjour

Il me semble que tu as oublié pour l'erreur (à vérifier)

On Error Resume Next

'...

next

crdlt,

André

Bonsoir,

ThisWorkbook désigne toujours le classeur dans lequel se trouve la macro en train de s'éxécuter.

Un test sur le nom de ThisWorkbook apparaît donc complètement farfelu ! Tu ne sais pas dans quel classeur tu écris la macro !!!

D'accord MFerrand, mais pourquoi mon classeur se ferme à l'ouverture d'un autre ?

Avec :

    Application.Quit

tu fermes Excel !

Soit lorsqu'un autre classeur devient actif, Excel ferme !

Ok, j'ai compris.

Dans ce cas comment faire pour que :

Si mon classeur ("A") est le seul ouvert alors Excel se ferme à la fermeture de l'userform2.

Si un autre classeur est ouvert alors seul mon classeur ("A") se ferme.

Merci.

J'en ai 3 ou 4 en cours ! je regarderai ensuite, sinon je vais finir par mélanger les problèmes !

Pas de soucis, un grand merci à toi .

Benoist28200 a écrit :

Ok, j'ai compris.

Dans ce cas comment faire pour que :

Si mon classeur ("A") est le seul ouvert alors Excel se ferme à la fermeture de l'userform2.

Si un autre classeur est ouvert alors seul mon classeur ("A") se ferme.

Merci.

Tu fermes à la fermeture du Userform ! Tu testes le nombre de classeurs ouverts : si >1 tu fermes le classeur seulement, sinon tu fermes et quitte l'application.

J'ai mis ce bout de code mais ça n'a pas l'air de fonctionner.

Private Sub UserForm_Deactivate()
    MsgBox (Workbooks.Count)
    If Workbooks.Count > 1 Then
    ThisWorkbook.Close savechanges:=True
    Application.Visible = True
    ElseIf Workbooks.Count = 1 Then
    ThisWorkbook.Close savechanges:=True
    Application.Visible = True
    Application.Quit
    End If
End Sub

Pour ma part, je n'utiliserais pas Deactivate si tu dis que tu veux fermer à la fermeture de l'Userform...

Bonjour MFerrand,

J'ai modifié mais j'ai toujours un problème

Private Sub UserForm_Terminate()
    If Workbooks.Count > 1 Then
        ThisWorkbook.Save
        Application.Visible = True
    ElseIf Workbooks.Count = 1 Then
        ThisWorkbook.Close savechanges:=True
        Application.Visible = True
        Application.Quit
    End If
End Sub

Quel problème ?

Problème résolu, j'ai mis ce code:

Private Sub UserForm_Terminate()

    If Workbooks.Count > 1 Then
        ThisWorkbook.Save
        ThisWorkbook.Close
        Application.Visible = True
        Application.WindowState = xlMaximized
    ElseIf Workbooks.Count = 1 Then
        ThisWorkbook.Save
        Application.Visible = True
        Application.WindowState = xlMaximized
        Application.Quit
    End If

End Sub

Un grand merci MFerrand.

Rechercher des sujets similaires à "probleme ouverture"