Bonjour,
Je souhaiterai ouvrir un classeur excel à partir d'une macro d'un autre classeur excel. J'ai juste une petite requete, je ne veux pas que les programmes VBA et Macros s'exécutent à l'ouverture !!!
Merci d'avance de votre aide.![]()
Bonjour,
Je souhaiterai ouvrir un classeur excel à partir d'une macro d'un autre classeur excel. J'ai juste une petite requete, je ne veux pas que les programmes VBA et Macros s'exécutent à l'ouverture !!!
Merci d'avance de votre aide.![]()
Tu placeces cette ligne en tête de la macro Workbook_Open dans ThisWorkbook
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.EnableEvents = False
Merci pour l'info, mais en fait c'est pas tout à fait ce que je veux faire !
Je vais m'expliquer plus clairement.
J'ai créé une macor dans un classeur, qui ouvre des classeurs (dans une boucle) afin d'effectuer un traitement sur les données de chacun d'eux.
les classeurs que je souhaite ouvrir sont nombreux. J'aimerai donc éviter d'aller modifier le code de chacun d'eux afin de pouvoir les ouvrir par programme. De plus cette ouverture sans tenir compte des macros devra etre juste temporaire pendant mon traitement. Un peu comme quand on choisi "désactiver les macros' à l'ouverture d'un classeur.
Est-ce possible ?
Bonjour
En complément à la réponse de Ouskel'n'or.
Il y a deux manières de lancer une macro au démarrage d'un classeur.
1. l'évènement sur ouverture du classeur, contrôlé par du code placé dans le module appelé habituellement ThisWorkbook
2. Une macro auto_open placée dans un module standard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Workbook_Open() MsgBox "Bonjour Thisworkbook" End Sub
Le code qui gère l'évènement d'ouverture du classeur est toujours exécuté, sauf désactivation des macros...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub auto_open() MsgBox "Bonjour auto_open" End Sub
La macro Auto_Open n'est pas exécutée lorsque le classeur qui la contient est ouvert par VBA...
[EDIT] xc78370:
Ta réponse a croisé mon message...
Mais si tu fais ce que Ouskel'n'or te dit, tu résous ton problème. Place le code
dans le classeur appelant avant la ligne de code qui ouvre le classeur appelé[/B]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2application.enableevents = false
[/EDIT]
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
En fait j'ai un 'Stop' dans l'événement Workbook_Open de chacun de mes classeurs à ouvrir. Cela me gene car je souhaite effectuer mon traitement de maniere autonome. Cependant ce 'Stop' est utile dans le fonctionnement 'normal' du classeur. Je ne peux pas l'enlever (de plus j'ai presque 200 classeurs à traiter, je me vois mal aller dans le code pour supprimer le 'STOP' 200 fois, effectuer mon traitement et remettre 200 fois le 'STOP'...)
La désactivation des macros dont tu parles est bien : Application.EnableEvents = FalseLe code qui gère l'évènement d'ouverture du classeur est toujours exécuté, sauf désactivation des macros...
Si c'est le cas, y a t-il moyen (ca me paraitrait bizarre) de désactiver les macro d'un classeur dsans ouvrir ce classeur ???![]()
Désolé...
Ma réponse à ta réponse à croisée la modif de ta réponse à ma premiere réponse...
Je ne l'avais aps compris comme ca ! Je vais donc tenter ce qu'Ouskel'n'or a dit.
Merci bien !
Non, la désactivation dont je parle dans ce cas-là dépend du niveau de sécurité.
Relis ce que Ouskel'n'or et moi te disons. et essaie la solution proposée!
Dans un classeur, tu as un code qui ouvre un autre classeur. Juste avant cette ligne de code, donc dans le classeur appelant, tu désactives la gestion des évènements... et donc, l'évènement Open du classeur que tu vas ouvrir n'est plus géré...
Ne pas oublier la dernière ligne du code que je te donne, c'est important...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 application.enableevents = false workbooks.open "monclasseur.xls" ... application.enableevents = true
Essaie et tu verras que le stop du classeur ouvert par la macro n'est plus actif...
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
Nous avons eu un peu de mal à communiquer, mais finalement, nous y sommes arrivés...
J'ai donc appliqué le 'EnableEvents' avec succès, mon probleme est résolu !
Merci beaucoup à vous deux !
PS : Moi aussi j'ai lu Eckhart Tolle et son fameux "Le pouvoir du moment présent" et je l'ai trouvé assez réaliste sur beaucoup de points !!!
Partager