Forcer l'ouverture d'unclasseur dans une nouvelle instance...

white-spirit

XLDnaute Occasionnel
Bonjour Le Forum,

après avoir fouillé un bon moment, ici et ailleurs, je vous expose mon besoin, au cas ou qq'un saurais y remédier.

Voila: j'utilise un classeur contenant des macros, et en particulier des instructions agissant sur le mode de placement du curseur après la saisie, et sur la correction automatique.
Les instructions sont données à l'ouverture du classeur, et retirées à la fermeture, pour retrouver un Excel "standard".

Mon souci survint lorsque je dois ouvrir un autre classeur similaire (le nom est #), en simultané, pour consulter qq chose.
Si je laisse s'ouvrir dans la même instance Excel, lorsque je referme ce classeur, il enlève les instructions, alors que j'en ai encore besoin pour le précédent tjrs ouvert....

J'ai bien compris que mon seul salut est d'ouvrir une nouvelle instance Excel.

Je sais déja le faire avec une macro (dans celle qui est ouverte), mais c'est pour d'autres actions.
Le faire par macro pour la consultation que je veux faire ne m'intéresse pas, pas plus que le faire par le lancement Windows d'une nouvelle instance vide.

Donc, 2 pistes:
- soit je modifie Excel pour que l'ouverture de tout nouveau classeur se fasse dans une nouvelle instance
- soit je demande seulement à chacun des classeurs concernés (instructions vba) de s'ouvrir dans une instance indépendante...

Ce que j'ai trouvé à ce sujet concerne plutôt l'instruction pour Excel en entier, mais je n'ai pas réussi à le faire fonctionner... quant à l'autre cas, j'ai rien trouvé de probant.

Merci de me proposer vos idées, vous en remerciant par avance.

Cordialement

WS
 

white-spirit

XLDnaute Occasionnel
Re : Forcer l'ouverture d'unclasseur dans une nouvelle instance...

Re,

ALERTE - ALERTE, il ya une coquille....

Bonjour Job75, bonjour tt le monde,

Le sujet est résolu... j'ai trouvé une solution pour ouvrir un classeur dans une autre instance, uniquement si qq chose est déja ouvert, et si ce classeur à ouvrir contient des instructions "perturbatrices".

Je m'explique:

Excel est ouvert sur un classeur A.
Je souhaite ouvrir le classeur B, qui contient des instructions (à l'ouverture) qui pertuberaient le classeur A, si l'on est dans la même instance.

Pour y arriver, le classeur B contient ce code:

-au début de Thisworkbook_Open(): If Workbooks.Count > 1 Then
ThisWorkbook.Close
Exit Sub
End If


ensuite je mets normalement le code de modification d'Excel que j'utilise habituellement..

- au début de Thisworkbook_BeforeClose(): If Workbooks.Count > 1 Then
Call OuvrirDansNouvelleInstance
Else:


ensuite je mets le code qui enlève les modifications d'Excel (retour état "standard"), suivi bien sur de End if

et juste à la fin de cette macro, je mets If Workbooks.Count > 1 Then
ActiveWorkbook.Saved = True
End If
Application.DisplayAlerts = False
End Sub


- dans un module je mets la macro: Sub OuvrirDansNouvelleInstance()

Dim appExcel As Excel.Application
Set appExcel = CreateObject("Excel.Application")
Dim Titre
Dim Repertoire
Titre = ActiveWorkbook.Name
Repertoire = ThisWorkbook.Path
'lancement d'une autre occurence
With appExcel
.Workbooks.Open Repertoire & "\" & Titre
.Visible = True
.ActiveWorkbook.RunAutoMacros xlAutoOpen
.DisplayAlerts = False
End With
End Sub


ça fonctionne bien, si je ne travaille pas avec des classeurs contenant les modifs --> RAS, sinon le classeur "modifiant" commence à s'ouvrir, se lance en double ds une autre instance, se ferme sans alertes, et rien n'est modifié dans le classeur qui était ouvert initialement. Celui qui vient de se lancer dans l'autre instance a bien sur installé les modifs qu'il demande, mais c'est une autre instance..... donc pas de pb.

Je dois avouer une simple conséquence : le lancement ds la 2nde instance m'affiche la boite de sélection "Lecture-écriture / Lecture seule", mais ce n'est pas très gênant.

Si mes explications ne sont pas claires, dites-le moi ... et n'hésitez pas non plus à donner votre avis.

Merci encore de votre intérêt,

Cordialement

WS
 

white-spirit

XLDnaute Occasionnel
Re : Forcer l'ouverture d'unclasseur dans une nouvelle instance...

Re,
effectivement, tu as raison, ça fonctionne très bien !

J'avoue que je n'avais pas bien interpreté le fonctionnement de "Activate" & "Déactivate".

Je précise juste que pour mo cas, il ya une raison que je n'avais pas évoquée (découverte depuis).

Le premier classeur ouvert (le A) peut avoir une macro (chronomètre) qui tourne en boucle, pendant que je décide d'ouvrir l'autre classeur (le B). Si je reste dans la même instance, j'ai une erreur d'éxécution de cette macro ("l'indice n'appartient pas à la sélection), qui s'arrête donc ... Avec une instance autre, pas de pb de ce genre.

Autre avantage : si j'en ai besoin, je peux déporter la nouvelle instance ouverte vers un autre écran ...

Toutefois, tu as bien fait de me reprendre sur ce point.

Merci encore, bonne continuation

Cordialement

WS
 

job75

XLDnaute Barbatruc
Re : Forcer l'ouverture d'unclasseur dans une nouvelle instance...

Le premier classeur ouvert (le A) peut avoir une macro (chronomètre) qui tourne en boucle, pendant que je décide d'ouvrir l'autre classeur (le B). Si je reste dans la même instance, j'ai une erreur d'éxécution de cette macro ("l'indice n'appartient pas à la sélection), qui s'arrête donc ... Avec une instance autre, pas de pb de ce genre.

Tout simplement la macro chronomètre n'est pas au point, faire peut-être une gestion d'erreur...

Mais quand on a un truc dans la tête on a du mal à s'en séparer n'est-ce pas ?

A+
 

Discussions similaires

Réponses
7
Affichages
538