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 : 1057
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} 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...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION D'USER/CLIENT SOUS EXCEL
Voici un pti fichier XLS, quipeut rendre bien des services, dés lors que vous devez gérer des client...

{Visual Basic, VB6, VB.NET, VB 2005} GRILLE QUI RÉSOUD LE SUDOKU
Bonjour tout le monde. Le fichier Excel que je vous envoie permet de résoudre la grille du célébr...

{Visual Basic, VB6, VB.NET, VB 2005} EXCEL VBA - FILTRER LE CONTENU D'UNE LISTVIEW
Voici une petite démo qui vous permettra de filtrer "on the fly" le contenu d'une listview, en sélec...

{Visual Basic, VB6, VB.NET, VB 2005} FRACTALES MANDELBROT & JULIA SOUS EXCEL
J'ai repris les classeurs transmis par "Bourbon1" et "bayosky" pour m'amuser un peu. J'y ai rajouté...