[VBA] Ouverture/Fermture de classeurs en rafale

1 réponse
Avatar
HD
Bonjour,

J'ai un classeur principal sur lequel je récupère des copies de feuilles
d'autres classeur. Via un script vba, j'ouvre un classeur Excel, copie une
de ses feuilles sur le classeur principal et referme le classeur en
question... mais un grand nombre de fois... J'ai ainsi plus de 400 classeurs
à ouvrir en rafale avec copie de feuille. Le souci est que cela prend pas
mal de temps.

Lorsque la macro s'effectue, elle crée une instance Excel à l'ouverture du
classeur (via Workbook.Open), le temps que le classeur soit présent lors de
la copie, puis la supprime (lors du Workbook.Close). Je suppose que je
pourrais gagner du temps à ouvrir les classeurs Excel dans la même instance
que celle de mon classeur principal.

Mais comment forcer Excel à s'ouvrir dans la même instance ?

Y'aurait-il d'autres possibilités pour raccourcir la durée d'exécution de
cette macro ? Je passe par une boucle où j'utilise déjà le ScreenUpdating =
False et le EnableEvents = False.

Pour info, je travaille avec Excel 2007.

Merci d'avance pour votre aide.
--
@+
HD

1 réponse

Avatar
LSteph
Bonjour,

On ne saurait apporter plus de modification à ton code que ce que
l'on peut en voir.
En cette absence on va quand même déjà aventurer une réponse:

Pourquoi diable créer une nouvelle instance excel?

Ceci suffirait:
... Via un script vba, j'ouvre un classeur Excel, copie une
de ses feuilles sur le classeur principal et referme le classeur en
question..



Réserve toute personnelle: cela fait peut-être un peu lourd dans un
seul classeur.

... mais un grand nombre de fois... J'ai ainsi plus de 400 classeurs
à ouvrir en rafale avec copie de feuille



Cordialement.

--
LSteph

On 19 juil, 15:06, "HD" wrote:
Bonjour,

J'ai un classeur principal sur lequel je récupère des copies de feuil les
d'autres classeur. Via un script vba, j'ouvre un classeur Excel, copie un e
de ses feuilles sur le classeur principal et referme le classeur en
question... mais un grand nombre de fois... J'ai ainsi plus de 400 classe urs
à ouvrir en rafale avec copie de feuille. Le souci est que cela prend p as
mal de temps.

Lorsque la macro s'effectue, elle crée une instance Excel à l'ouvertu re du
classeur (via Workbook.Open), le temps que le classeur soit présent lor s de
la copie, puis la supprime (lors du Workbook.Close). Je suppose que je
pourrais gagner du temps à ouvrir les classeurs Excel dans la même in stance
que celle de mon classeur principal.

Mais comment forcer Excel à s'ouvrir dans la même instance ?

Y'aurait-il d'autres possibilités pour raccourcir la durée d'exécut ion de
cette macro ? Je passe par une boucle où j'utilise déjà le ScreenUp dating =
False et le EnableEvents = False.

Pour info, je travaille avec Excel 2007.

Merci d'avance pour votre aide.
--
@+
HD