[VBA] Activer une macro d'un classeur que je viens d'ouvrir sans activer la macro d'ouverture

Le
HD
Bonjour,

J'ai un script qui doit ouvrir tout un tas de classeur Excel. Ce Script en
fait ouvre un classeur, lancer une macro de mise à jour, enregistre le
classeur, puis ferme le classeur, pour ensuite passer au classeur suivant

Mon souci est que, malgré que j'ai bien mis les lignes :
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
avant chaque ouverture de classeur J'ai systématiquement la macro
d'ouverture de ce classeur (Workbook_Open) qui se lance à l'ouverture avec
en prime le vérificateur de compatibilité Excel qui demande une confirmation
en fermeture

Je suppose que le souci vient du fait que je lance une macro provenant des
classeurs que j'ouvre via :
Application.Run "'Budget d''heures.xls'!Factu_Actuelle"
Le fait de lancer cette macro doit annuler mes commandes de blocage
d'événements, d'affichage d'écran et surtout de masquage de demande de
confirmation

Y'a-t-il une solution permettant de lancer, à partir d'un classeur, la macro
contenu dans un autre classeur sans pour autant lancer les procédures
d'événements et les demandes de confirmation de messages ?

Va-t-il me falloir incorporer les macros de ces classeurs dans le classeur
qui les ouvre un à un ?

Merci d'avance pour votre aide
--
@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22590201
Bonjour,

Voici comment faire pour ouvrir un fichier Excel et exécuter une macro dans déclencher l'activation des procédures
événementielles.

Tu adaptes la valeur des variables et tu retiens la ligne de commande
pour lancer la macro de ton choix selon la location de cette dernière.

Si tu devais lancer la même procédure à partir d'une version Excel 2000 ou précédente,
de mémoire, cette ligne de code : "Application.EnableEvents = False" n'a aucun effet
sur les procédures événementielles du fichier Excel à ouvrir.

'-------------------------------------------
Sub test()
Dim LaMacro As String
Dim Chemin As String
Fichier As String

Chemin = "c:UsersDMDocuments"
Fichier = "Classeur1.xls"

Application.ScreenUpdating = False
Application.EnableEvents = False
Workbooks.Open Chemin & Fichier

'Si la macro est dans un module standard
LaMacro = LaMacro = "'" & ActiveWorkbook.Name & "'!NomMacro"
'Si la macro est dans un module Feuille, thisWorkbook
LaMacro = "'" & ActiveWorkbook.Name & "'!NomModule.NomMacro"
Application.Run LaMacro

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
'-------------------------------------------

Pour supprimer le message de compatibilité,
Bouton Office / Prepare / Run Compatibilité Checker

Dans le bas de la fenêtre qui s'ouvre, tu décoches la case
"Check compatibility.... "

--
MichD
--------------------------------------------


"HD" Bonjour,

J'ai un script qui doit ouvrir tout un tas de classeur Excel. Ce Script en
fait ouvre un classeur, lancer une macro de mise à jour, enregistre le
classeur, puis ferme le classeur, pour ensuite passer au classeur suivant...

Mon souci est que, malgré que j'ai bien mis les lignes :
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
avant chaque ouverture de classeur... J'ai systématiquement la macro
d'ouverture de ce classeur (Workbook_Open) qui se lance à l'ouverture avec
en prime le vérificateur de compatibilité Excel qui demande une confirmation
en fermeture...

Je suppose que le souci vient du fait que je lance une macro provenant des
classeurs que j'ouvre via :
Application.Run "'Budget d''heures.xls'!Factu_Actuelle"
Le fait de lancer cette macro doit annuler mes commandes de blocage
d'événements, d'affichage d'écran et surtout de masquage de demande de
confirmation...

Y'a-t-il une solution permettant de lancer, à partir d'un classeur, la macro
contenu dans un autre classeur sans pour autant lancer les procédures
d'événements et les demandes de confirmation de messages ?

Va-t-il me falloir incorporer les macros de ces classeurs dans le classeur
qui les ouvre un à un ?

Merci d'avance pour votre aide
--
@+
HD
Publicité
Poster une réponse
Anonyme