Les Snippets

Connexion

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

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 04/09/2008 16:02:49 et initié par bigfish_le vrai [Liste]
Vue : 2266
Catégorie(s) : Trucs & Astuces
Langages dispo pour ce code :
- VBA



Langage : VBA
Date ajout : 04/09/2008
Posté par bigfish_le vrai [Liste]
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
Remarque :
Pour cela le formulaire doit absolument contenir un bouton(Commandbutton1 un dans l'exemple ci-dessus) pour fermer excel

Le formulaire doit obligatoirement etre non modale donc son option Show modal doit être reglé sur False.

Attention à partir du moment ou vous aurez mis ce code dans le fichier il faudra desactiver les macros à l'ouverture pour pouvoir acceder au code.

Snippets en rapport avec : Fichier, Ouverture, Excel, Vba, Nouvelle session



Codes sources en rapport avec : Fichier, Ouverture, Excel, Vba, Nouvelle session

{Visual Basic, VB6, VB.NET, VB 2005} LISTER FICHIERS D'UN DOSSIER
ce p'tit code permet de lister les fichiers d'un dossier choisi en plaçant leur noms, leur type et l...

{Visual Basic, VB6, VB.NET, VB 2005} MACRO VBA : SYNCHRONISATION D'UN FICHIER XL PAR UN AUTRE
Le but est de synchroniser chaque ligne d'une feuille d'un fichier XL par un autre. Le critère iden...

{Visual Basic, VB6, VB.NET, VB 2005} RENOMMER SÉRIE D'IMAGE DIRECTEMENT AVEC VBA EXCEL (CLASSEMENT SELON DATE ET HEURE DE LA PRISE DE VUE)
Les applications permettant de faire ce travail sont nombreuses. Mais je n'ai jamais trouvé de sourc...

{Visual Basic, VB6, VB.NET, VB 2005} PILOTER ACROBAT READER DEPUIS EXCEL ET VBA
Exemple d'utilisation du composant OCX AcroPDF (AcrobatReader). Permet d'ouvrir un document pdf dan...

{Visual Basic, VB6, VB.NET, VB 2005} VBA EXCEL FONCTION POUR FORMATER DES ECRITURES BANCAIRES
Je copiais mes écritures bancaires (LCL) à la main et je les formatais pour coïncider avec ma feuil...

{Visual Basic, VB6, VB.NET, VB 2005} RENOMMER FICHIERS AVEC VIEWER
Sert à trier des photos à l'aide d'un viewer,les classer, les renommer pour l'exécution d'un diapora...

{Visual Basic, VB6, VB.NET, VB 2005} COMPARATEUR EXCEL EN MASSE, AMÉLIORATIONS
mabrouklepoux avait proposé un comparateur de fichiers Excel. http://www.vbfrance.com/code.aspx?ID=3...

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL <> AUTOCAD LT
suite à des demandes régulières sur les liaisons DDE entre Autocad et excel, je vous joins cette ap...

{Visual Basic, VB6, VB.NET, VB 2005} SUBSTITUTION AU CONTROLE REFEDIT D'EXCEL
le Contrôle Refedit est utilisé dans excel pour sélectionner une plage de cellule(s) Cette substitu...

{Visual Basic, VB6, VB.NET, VB 2005} TRAIT SUR USF VBA
Pour repondre GRATUITEMENT à ma question posee sur le forum il y a 2 jours, voici la réponse. Contr...