Bonjour,
On m'a conseillé de poser ma question plutôt sur ce site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel). J'ai
tenté de mettre cette macro (en l'enregistrant comme macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros, avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel). J'ai
tenté de mettre cette macro (en l'enregistrant comme macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros, avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel). J'ai
tenté de mettre cette macro (en l'enregistrant comme macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros, avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sont
activées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou" (ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sont
activées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou" (ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sont
activées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou" (ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
Juste un dernier point : je souhaite en plus ne pas avoir
les alertes d'excel (voulez-vous activer les macros +
voulez-vous mettre à jour les liens avec d'autres
fichiers). J'ai voulu employer la
propriété "DisplayAlerts", en l'utilisant dès l'ouverture
d'Excel (en enregistrant comme macro complémentaire dans
XLouvrir) :
Private Sub Workbook_Open()
Application.DisplayAlerts = False
End Sub
Le problème est que cela ne marche pas. D'où vient le
problème ? (sachant que cette macro, si j'ai bien compris,
est exécutée avant l'ouverture du fichier -- on s'en
aperçoit en ajoutant par exemple MsgBox "coucou" à cette
macro)
Juste un dernier point : je souhaite en plus ne pas avoir
les alertes d'excel (voulez-vous activer les macros +
voulez-vous mettre à jour les liens avec d'autres
fichiers). J'ai voulu employer la
propriété "DisplayAlerts", en l'utilisant dès l'ouverture
d'Excel (en enregistrant comme macro complémentaire dans
XLouvrir) :
Private Sub Workbook_Open()
Application.DisplayAlerts = False
End Sub
Le problème est que cela ne marche pas. D'où vient le
problème ? (sachant que cette macro, si j'ai bien compris,
est exécutée avant l'ouverture du fichier -- on s'en
aperçoit en ajoutant par exemple MsgBox "coucou" à cette
macro)
Juste un dernier point : je souhaite en plus ne pas avoir
les alertes d'excel (voulez-vous activer les macros +
voulez-vous mettre à jour les liens avec d'autres
fichiers). J'ai voulu employer la
propriété "DisplayAlerts", en l'utilisant dès l'ouverture
d'Excel (en enregistrant comme macro complémentaire dans
XLouvrir) :
Private Sub Workbook_Open()
Application.DisplayAlerts = False
End Sub
Le problème est que cela ne marche pas. D'où vient le
problème ? (sachant que cette macro, si j'ai bien compris,
est exécutée avant l'ouverture du fichier -- on s'en
aperçoit en ajoutant par exemple MsgBox "coucou" à cette
macro)
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application Excel
au moment de sonouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sontactivées :
'====================== > >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou" (ou
l'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
lamacro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sont
activées :
'====================== > >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou" (ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open) pour
exécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application Excel
au moment de sonouverture (le perso.xls est exécuté au lancement d'Excel)
si les macros sontactivées :
'====================== > >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou" (ou
l'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour exécuter
lamacro à l'ouverture d'excel), mais ça ne fonctionne pas
dans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ie
Excel) dont tu personnalises des "clones" des événements
standard (ici
WorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le terme
consacré, je veux dire que les événements de ton
application Excel sont des
copies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ils
s'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a du
code dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,
puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une recherche
avec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open)
pour
exécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application
Excel
au moment de sonouverture (le perso.xls est exécuté au lancement
d'Excel)
si les macros sontactivées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou"
(ou
l'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuter
lamacro à l'ouverture d'excel), mais ça ne fonctionne
pas
dans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.
-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ie
Excel) dont tu personnalises des "clones" des événements
standard (ici
WorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le terme
consacré, je veux dire que les événements de ton
application Excel sont des
copies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ils
s'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a du
code dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,
puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une recherche
avec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open)
pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application
Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement
d'Excel)
si les macros sont
activées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou"
(ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne
pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.
-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ie
Excel) dont tu personnalises des "clones" des événements
standard (ici
WorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le terme
consacré, je veux dire que les événements de ton
application Excel sont des
copies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ils
s'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a du
code dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,
puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une recherche
avec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open)
pour
exécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application
Excel
au moment de sonouverture (le perso.xls est exécuté au lancement
d'Excel)
si les macros sontactivées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou"
(ou
l'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuter
lamacro à l'ouverture d'excel), mais ça ne fonctionne
pas
dans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.
Désolé, mais c'est encore moi : je ne vois pas du tout à
quoi sert ton code "If Not Wb.Name = ThisWorkbook.Name Then
" dans le module de classe que tu me conseillais de créer.
Yoyo (toujours subjugué par le fonctionnement de cette
macro)-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ieExcel) dont tu personnalises des "clones" des événements
standard (iciWorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le termeconsacré, je veux dire que les événements de ton
application Excel sont descopies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ilss'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a ducode dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une rechercheavec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open)
pourexécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >> >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >> >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application
Excelau moment de sonouverture (le perso.xls est exécuté au lancement
d'Excel)si les macros sontactivées :
'====================== > >> >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >> >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou"
(oul'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuterlamacro à l'ouverture d'excel), mais ça ne fonctionne
pasdans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
riendu tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.
Désolé, mais c'est encore moi : je ne vois pas du tout à
quoi sert ton code "If Not Wb.Name = ThisWorkbook.Name Then
" dans le module de classe que tu me conseillais de créer.
Yoyo (toujours subjugué par le fonctionnement de cette
macro)
-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ie
Excel) dont tu personnalises des "clones" des événements
standard (ici
WorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le terme
consacré, je veux dire que les événements de ton
application Excel sont des
copies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ils
s'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a du
code dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,
puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une recherche
avec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo
-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à condition
qu'il ait été enregistré au moins une fois), il faut
passer par la création d'un
'Excel perso' dans un module de classe, qui va
intercepter les événements
standard d'Excel de ton choix (ici le Workbook_Open)
pour
exécuter le code de
ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >> >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >> >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application
Excel
au moment de son
ouverture (le perso.xls est exécuté au lancement
d'Excel)
si les macros sont
activées :
'====================== > >> >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >> >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou"
(ou
l'exécution du code
que tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :
Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'ai
tenté de mettre cette macro (en l'enregistrant comme
macro
complémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuter
la
macro à l'ouverture d'excel), mais ça ne fonctionne
pas
dans mon cas : excel exécute apparemment les macros,
avant
d'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
rien
du tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.
Désolé, mais c'est encore moi : je ne vois pas du tout à
quoi sert ton code "If Not Wb.Name = ThisWorkbook.Name Then
" dans le module de classe que tu me conseillais de créer.
Yoyo (toujours subjugué par le fonctionnement de cette
macro)-----Message d'origine-----
Bonsoir (bis),
Dans ce cas, un module de classe te permet de créer un
objet Application (ieExcel) dont tu personnalises des "clones" des événements
standard (iciWorkbookOpen, clone de Workbook_Open). Je ne sais pas
si "clone" est le termeconsacré, je veux dire que les événements de ton
application Excel sont descopies conformes de ceux d'Excel, mais ils ne les
remplacent pas, ilss'exécutent en plus de ceux d'Excel. Si tu as par exemple
un classeur qui a ducode dans son Workbook_Open, ce code va s'exécuter à
l'ouverture du classeur,puis le code de ton WorkbookOpen.
Cette technique a des applications intéressantes, là
aussi, fais une rechercheavec Google dans les archives du forum pour en récupérer
des exemples.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Respect. ça marche du tonnerre...
Peux-tu stp me donner quelques explications, afin que je
comprenne son fonctionnement ?
Merci,
Yoyo-----Message d'origine-----
Bonsoir,
Pour exécuter une macro à l'ouverture de n'importe quel
classeur (à conditionqu'il ait été enregistré au moins une fois), il faut
passer par la création d'un'Excel perso' dans un module de classe, qui va
intercepter les événementsstandard d'Excel de ton choix (ici le Workbook_Open)
pourexécuter le code deton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles)
insère un module de classeet renomme-le ExcelApplication. Puis recopie dans ce
module le code ci-dessous :
'====================== > >> >Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'====================== > >> >
Ensuite, dans le module ThisWorkbook du perso.xls,
recopie ce code qui va créerune instance d'Excel et l'affecter à l'application
Excelau moment de sonouverture (le perso.xls est exécuté au lancement
d'Excel)si les macros sontactivées :
'====================== > >> >Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'====================== > >> >
Voilà. Enregistre, ferme puis relance Excel. Ensuite,
l'ouverture de chaqueclasseur va provoquer l'affichage du message "coucou"
(oul'exécution du codeque tu mettras à sa place).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma
bal !
Bonjour,
On m'a conseillé de poser ma question plutôt sur ce
site :Je désire exécuter une macro à l'ouverture de chaque
fichier excel (à la rigueur, à l'ouverture d'excel).
J'aitenté de mettre cette macro (en l'enregistrant comme
macrocomplémentaire) dans le répertoire "C:Program
FilesMicrosoft OfficeOfficeXLOuvrir" (pour
exécuterlamacro à l'ouverture d'excel), mais ça ne fonctionne
pasdans mon cas : excel exécute apparemment les macros,
avantd'ouvrir les fichiers ; or, cette macro est censée
modifier les fichiers que l'on ouvre --> ça ne fait
riendu tout.
Est-ce réalisable ?
Merci pour les futures réponses.
.
.