[VBA] Activer une macro d'un classeur que je viens d'ouvrir sans activer la macro d'ouverture
1 réponse
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 ?
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
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
'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
"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
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
'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
"HD" <hd@anti.spam.fr> a écrit dans le message de groupe de discussion : i7754o$bg9$1@saria.nerim.net...
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 ?
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
'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
"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 ?