Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Adeus33

XLDnaute Occasionnel
Bonsoir le forum,

Est il possible de forcer l'ouverture d'une nouvelle application Excel / Instance Excel à chaque ouverture d'un nouveau classeur Excel (VBA ou autre) ?

Je n'utilise probablement pas le bon lexique donc voici comment je vois les choses ^^ :
- Application Excel / instance excel : peut contenir plusieurs classeurs Excel
- Classeur Excel : peut contenir plusieurs feuille de calcul Excel

En fait, je ne souhaite pas avoir plusieurs classeurs ouverts au sein de la même application Excel : 1 classeur par application !

Je ne sais pas si je suis assez clair .... si ce n'est pas le cas, je tenterai une nouvelle explication ^^

Merci d'avance pour vos conseils.

Bonne soirée

Adeus
 
Dernière édition:

Adeus33

XLDnaute Occasionnel
Re : Forcer l'ouverture d'une nouvelle application excel

Bonsoir camarchepas,

Tentative d'explication de mon lexique perso ^^ :

En vba, lorsque l'on veut fermer l'application on utilise : Application.Quit alors que ActiveWorkbook.Close permet de fermer le classeur.

Avec Excel 2010, tous les classeurs s'ouvrent dans la même application Excel (la même instance) et je souhaiterais ouvrir une application (instance) par classeur (ou du moins une instance pour un fichier precis et une autre instances pour tous les autres fichiers).



Adeus
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Forcer l'ouverture d'une nouvelle application excel

Je crois voir ton problème , peut être que je me trompe , enfin je te propose qu'en même

C'est que tu as peur de fermer un autre classeur que ccelui sur lequel tu travailles :

une solution est de faire comme ceci :

sub Ferme
'Si plusieurs classeurs
if workbooks.count>1 then

thisworbook.close false ' Fermeture sans sauvegarde

else
'Si un seul classeur
application.quit

end if
 

camarchepas

XLDnaute Barbatruc
Re : Forcer l'ouverture d'une nouvelle application excel

Re ,

Si tu tiens vraiment à 2 instances ....

@ Bonsoir Mj :

sinon par macro :

sub TestExcel2()
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.Visible = True
end sub
 

Adeus33

XLDnaute Occasionnel
Re : Forcer l'ouverture d'une nouvelle application excel

Merci pour votre aide (mais je m'explique mal^^)

Pour expliquer le contexte :

J'ai créé un utilitaire permettant de gérer des bases de données à partir d'userforms imbriqués les uns dans les autres.
Lorsque j'ouvre ce fichier excel, l'userform principal s'ouvre et les feuilles excel ainsi que l'application disparaissent (visible = false). Les utilisateurs n'ont donc accès qu'aux userforms.

Cette application tourne en tache de fond.
Les userforms étant en non-modal, je peux ouvrir d'autres fichiers, documents sans problème, à part pour les fichiers Excel qui s'ouvrent dans la même instance que mon utilitaire... ce qui fait ré-apparaitre le fichier...

J'aimerais donc limiter l'instance à l'utilitaire (de façon à la garder invisible) et ouvrir les autres fichiers Excel dans une autre instance.
 
Dernière édition:

Adeus33

XLDnaute Occasionnel
Re : Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Bonsoir Staple1600

En fichier joint un exemple simulant mon utilitaire.

Lorsque j'ouvre ce fichier, l'userform se lance et le classeur devient invisible, l'utilisateur a donc accès uniquement à/aux userform(s).
Cette utilitaire tourne en tache de fond, donc je souhaite pouvoir continuer à utiliser l'ordinateur normalement --> sans jamais faire ré-apparaitre le classeur utilitaire, ce qui n'est pas le cas lorsque j'ouvre d'autres fichiers Excel...
 

Pièces jointes

  • Essai.xlsm
    15.8 KB · Affichages: 57
  • Essai.xlsm
    15.8 KB · Affichages: 67
  • Essai.xlsm
    15.8 KB · Affichages: 71

Dranreb

XLDnaute Barbatruc
Re : Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Bonsoir.

Vous pouvez aussi mettre à True la propriété IsAddin du ThisWorkbook utilitaire, comme ça le classeur ne sera jamais visible.
À peaufiner peut être pour rendre l'application invisible quand seul le classeur utilitaire est ouvert…
 

Staple1600

XLDnaute Barbatruc
Re : Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Re, Bonsoir Dranreb

Avec Excel 2013, la donne change, non ? (pour ce qui concerne les instances)
Open Excel workbooks in separate windows and view them side by side - Office Blogs
 

Adeus33

XLDnaute Occasionnel
Re : Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Bonsoir,

Dranreb :
Merci pour votre aide, je vais creuser du coté de la propriété IsAddin.

Staple 1600 : oui voila c'est exactement ce que je cherche à faire mais avec Excel 2010 : Avoir une instance par classeur Excel, comme ça je peux rendre invisible l'instance de l'utilitaire et laisser les autres en l'état.
 

Dranreb

XLDnaute Barbatruc
Re : Gestion des instances excel : changer d'instance à chaque ouverture de classeur

Bonsoir Staple1600.

J'ignore ce qu'il en est de la version 2013.
Ce qui est sûr, c'est que je ne voudrai jamais de cette version s'il elle ne propose plus de collection Workbooks, vu qu'un seul classeur y serait ouvert, et qu'il faut piloter une seconde application pour la moindre opération en impliquant plusieurs.
Qu'en est-il ?
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.