Je souhaite démarrer deux applications Excel indépendantes de manière à
pouvoir lancer une macro nécessitant plus d'1/2 heure d'exécution dans une
application Excel et de pouvoir continuer à travailler dans d'autres
classeurs Excel dans l'autre application Excel. Comment faire ?
Par défaut, c'est impossible: on a une seule application Excel qui gère tous
les classeurs et, si on lance une macro lourde, tous les classeurs sont
indisponibles.
Merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PMO
Bonjour,
Une piste avec l'astuce ci-dessous.
Pour tester faites les opérations suivantes:
CLASSEUR COMPORTANT LA MACRO DEMANDANT UN LONG TEMPS D EXECUTION 1) Créez un nouveau classeur 2) Copiez le code ci-dessous comportant une boucle interminable '********************* Sub BoucleSansFin() Do [a1] = [a1] + 1 DoEvents Loop End Sub '********************* 3) Enregistrez le classeur dans le disque C: sous le nom test.xls 4) Fermez le classeur
CLASSEUR POUR CONTINUER DE TRAVAILLER 1) Créez un nouveau classeur et nommez le ZAZA.xls 2) Copiez le code ci-dessous '********************* Sub PMO_NewInstance() Dim i& i& = Shell("Excel", 1) AppActivate i& DoEvents MsgBox "Continuer ?" End Sub '********************* 3) Lancez la macro PMO_NewInstance 4) Une nouvelle instance d'Excel apparaît 5) Faites usage du menu Fichier/Ouvrir et dans la boîte de dialogue sélectionnez le classeur test.xls 6) A partir de lui, lancez la macro BoucleSansFin 7) Cliquez sur ZAZA.xls dans la barre des tâches Window
Si tout se passe bien, vous pouvez travaillez dans ZAZA.xls pendant que la macro BoucleSansFin de test.xls continue de tourner. Vous pouvez vérifier la progression de test.xls en cliquant sur test.xls dans la barre des tâches Window.
IMPERATIF POUR LE FONCTIONNEMENT DoEvents Vous noterez l'usage, dans les deux macros, de l'instruction DoEvents qui est ABSOLUMENT INDISPENSABLE pour pouvoir reprendre la main. Il vous faudra placez cette instruction dans vos vraies macros et, notamment pour le classeur où s'exécute la macro longue, à des endroits judicieux afin qu'elle puisse réitérer.
Cordialement. -- PMO Patrick Morange
Je souhaite démarrer deux applications Excel indépendantes de manière à pouvoir lancer une macro nécessitant plus d'1/2 heure d'exécution dans une application Excel et de pouvoir continuer à travailler dans d'autres classeurs Excel dans l'autre application Excel. Comment faire ? Par défaut, c'est impossible: on a une seule application Excel qui gère tous les classeurs et, si on lance une macro lourde, tous les classeurs sont indisponibles. Merci d'avance.
Alain.
Bonjour,
Une piste avec l'astuce ci-dessous.
Pour tester faites les opérations suivantes:
CLASSEUR COMPORTANT LA MACRO
DEMANDANT UN LONG TEMPS D EXECUTION
1) Créez un nouveau classeur
2) Copiez le code ci-dessous comportant une boucle interminable
'*********************
Sub BoucleSansFin()
Do
[a1] = [a1] + 1
DoEvents
Loop
End Sub
'*********************
3) Enregistrez le classeur dans le disque C: sous le nom test.xls
4) Fermez le classeur
CLASSEUR POUR CONTINUER DE TRAVAILLER
1) Créez un nouveau classeur et nommez le ZAZA.xls
2) Copiez le code ci-dessous
'*********************
Sub PMO_NewInstance()
Dim i&
i& = Shell("Excel", 1)
AppActivate i&
DoEvents
MsgBox "Continuer ?"
End Sub
'*********************
3) Lancez la macro PMO_NewInstance
4) Une nouvelle instance d'Excel apparaît
5) Faites usage du menu Fichier/Ouvrir et dans la boîte de dialogue
sélectionnez le classeur test.xls
6) A partir de lui, lancez la macro BoucleSansFin
7) Cliquez sur ZAZA.xls dans la barre des tâches Window
Si tout se passe bien, vous pouvez travaillez dans ZAZA.xls pendant
que la macro BoucleSansFin de test.xls continue de tourner.
Vous pouvez vérifier la progression de test.xls en cliquant
sur test.xls dans la barre des tâches Window.
IMPERATIF POUR LE FONCTIONNEMENT DoEvents
Vous noterez l'usage, dans les deux macros, de
l'instruction DoEvents qui est ABSOLUMENT INDISPENSABLE
pour pouvoir reprendre la main.
Il vous faudra placez cette instruction dans vos vraies macros
et, notamment pour le classeur où s'exécute la macro longue,
à des endroits judicieux afin qu'elle puisse réitérer.
Cordialement.
--
PMO
Patrick Morange
Je souhaite démarrer deux applications Excel indépendantes de manière à
pouvoir lancer une macro nécessitant plus d'1/2 heure d'exécution dans une
application Excel et de pouvoir continuer à travailler dans d'autres
classeurs Excel dans l'autre application Excel. Comment faire ?
Par défaut, c'est impossible: on a une seule application Excel qui gère tous
les classeurs et, si on lance une macro lourde, tous les classeurs sont
indisponibles.
Merci d'avance.
CLASSEUR COMPORTANT LA MACRO DEMANDANT UN LONG TEMPS D EXECUTION 1) Créez un nouveau classeur 2) Copiez le code ci-dessous comportant une boucle interminable '********************* Sub BoucleSansFin() Do [a1] = [a1] + 1 DoEvents Loop End Sub '********************* 3) Enregistrez le classeur dans le disque C: sous le nom test.xls 4) Fermez le classeur
CLASSEUR POUR CONTINUER DE TRAVAILLER 1) Créez un nouveau classeur et nommez le ZAZA.xls 2) Copiez le code ci-dessous '********************* Sub PMO_NewInstance() Dim i& i& = Shell("Excel", 1) AppActivate i& DoEvents MsgBox "Continuer ?" End Sub '********************* 3) Lancez la macro PMO_NewInstance 4) Une nouvelle instance d'Excel apparaît 5) Faites usage du menu Fichier/Ouvrir et dans la boîte de dialogue sélectionnez le classeur test.xls 6) A partir de lui, lancez la macro BoucleSansFin 7) Cliquez sur ZAZA.xls dans la barre des tâches Window
Si tout se passe bien, vous pouvez travaillez dans ZAZA.xls pendant que la macro BoucleSansFin de test.xls continue de tourner. Vous pouvez vérifier la progression de test.xls en cliquant sur test.xls dans la barre des tâches Window.
IMPERATIF POUR LE FONCTIONNEMENT DoEvents Vous noterez l'usage, dans les deux macros, de l'instruction DoEvents qui est ABSOLUMENT INDISPENSABLE pour pouvoir reprendre la main. Il vous faudra placez cette instruction dans vos vraies macros et, notamment pour le classeur où s'exécute la macro longue, à des endroits judicieux afin qu'elle puisse réitérer.
Cordialement. -- PMO Patrick Morange
Je souhaite démarrer deux applications Excel indépendantes de manière à pouvoir lancer une macro nécessitant plus d'1/2 heure d'exécution dans une application Excel et de pouvoir continuer à travailler dans d'autres classeurs Excel dans l'autre application Excel. Comment faire ? Par défaut, c'est impossible: on a une seule application Excel qui gère tous les classeurs et, si on lance une macro lourde, tous les classeurs sont indisponibles. Merci d'avance.