Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
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

1 réponse

Avatar
michdenis
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" a écrit dans le message de groupe de discussion : i7754o$bg9$
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