Ouvrir un fichier excel dans une nouvelle session si la session existante contien déjà un fichier ouvert

Contenu du snippet

A mettre dans ThisWorkBook :
Option Explicit
Private Sub Workbook_Open()
    'on verifi si un fichier ou plus est/sont deja ouvert(s)
    'attention ce fichier sera comptabilisé
    If Workbooks.Count > 1 Then 'au moins un fichier déjà ouvert
        Dim ExcelAppli As Object, OpFichier As Object
        Application.DisplayAlerts = False
        'pour pouvoir ouvrir ce fichier une deuxieme fois il faut que le 1ere soit en lecture seul(read-only)
        'donc on passe ce fichier(ouvert) en lecture seul
        ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
        'on lance la nouvelle session excel
        Set ExcelAppli = CreateObject("Excel.Application")
        'ExcelAppli.Visible = False
        'on ouvre ce meme fichier dans la nouvelle session
        Set OpFichier = ExcelAppli.Workbooks.Open(ThisWorkbook.Path & "\" & ThisWorkbook.Name)
        Application.DisplayAlerts = True
        'on vide les variables objet
        Set OpFichier = Nothing
        Set ExcelAppli = Nothing
        'on ferme ce fichier sans le sauver
        ThisWorkbook.Close False
    Else
        'cette partie s'applique à la 2ieme ouverture ou à une ouverture dans une session
        'excel sans autre fichier ouvert
        DoEvents
        Application.Visible = False
        UserForm1.Show 'ATTENTION ce formulaire doit etre NON MODAL
    End If
End Sub
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Dans le code du Userform1:
Private Sub CommandButton1_Click()
    'on ferme excel
    Application.Quit
End Sub

Compatibilité : VBA

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.