Pb d'éxécution si classeur ouvert et fermé par du VBA
3 réponses
Yves Chabirand
Bonjour,
J'ai introduit du code dans l'évènement beforeClose d'un classeur.
Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc
l'éxécution de mon code.
Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs.
Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
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
anonymousA
bonjour,
je ne sais pas sous quelle version d'Excel tu es et je ne suis pas sur que l'exemple ci-dessous s'applique exactement à ta question mais on verra bien.
Sous Excel 2000, ce que j'ai pu constater c'est que si on ouvre un fichier , appelons le fichier 2( par une macro d'un autre fichier , appelons le fichier 1) , et que si ce fichier 2 possède des macros automatiques d'ouverture et de fermeture , et que dans ces macros du fichier 2, on écrive une instruction de fermeture du fichier 2, alors l'exécution de la macro du fichier 1 s'interrompt.
Exemple. Soit un fichier appelé tata.xls qui possède la macro suivante
Sub LAUNCH workbooks.open D:toto.xls msgbox "c'est fini" end sub
et que dans le fichier toto.xls on ait 2 macros dans le module thisworkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "je me ferme" End Sub
Private Sub Workbook_Open() MsgBox "c'est moi" ThisWorkbook.Close End Sub
ce qui va se passer si on lance la Sub LAUNCH, c'est qu'on aura bien les deux messages MsgBox "c'est moi" et MsgBox "je me ferme" mais jamais le message msgbox "c'est fini", ce qui montre bien que c'est la fermeture de toto qui fait interrompre la macro LAUNCH, alors pourtant que toto ne possède aucune instruction à priori permettant celà.
Je ne suis donc pas sur que ce que je dis plus haut est une réplique même approximative de ce que tu décris. Ceci dit, il m'encline à penser que si tu as une macro principale qui ouvre des fichiers, il faut que ce soit cette macro qui les ferme aussi ( donc supprimer l'ordre de fermeture du fichier X par lui même si c'est le cas ) , car dans ce cas, l'exécution de la macro prinicpale sera complète.
A+
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a (entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
Yves
bonjour,
je ne sais pas sous quelle version d'Excel tu es et je ne suis pas sur que
l'exemple ci-dessous s'applique exactement à ta question mais on verra bien.
Sous Excel 2000, ce que j'ai pu constater c'est que si on ouvre un fichier ,
appelons le fichier 2( par une macro d'un autre fichier , appelons le fichier
1) , et que si ce fichier 2 possède des macros automatiques d'ouverture et
de fermeture , et que dans ces macros du fichier 2, on écrive une instruction
de fermeture du fichier 2, alors l'exécution de la macro du fichier 1
s'interrompt.
Exemple. Soit un fichier appelé tata.xls qui possède la macro suivante
Sub LAUNCH
workbooks.open D:toto.xls
msgbox "c'est fini"
end sub
et que dans le fichier toto.xls on ait 2 macros dans le module thisworkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "je me ferme"
End Sub
Private Sub Workbook_Open()
MsgBox "c'est moi"
ThisWorkbook.Close
End Sub
ce qui va se passer si on lance la Sub LAUNCH, c'est qu'on aura bien les
deux messages MsgBox "c'est moi" et MsgBox "je me ferme" mais jamais le
message
msgbox "c'est fini", ce qui montre bien que c'est la fermeture de toto qui
fait interrompre la macro LAUNCH, alors pourtant que toto ne possède aucune
instruction à priori permettant celà.
Je ne suis donc pas sur que ce que je dis plus haut est une réplique même
approximative de ce que tu décris.
Ceci dit, il m'encline à penser que si tu as une macro principale qui ouvre
des fichiers, il faut que ce soit cette macro qui les ferme aussi ( donc
supprimer l'ordre de fermeture du fichier X par lui même si c'est le cas ) ,
car dans ce cas, l'exécution de la macro prinicpale sera complète.
A+
Bonjour,
J'ai introduit du code dans l'évènement beforeClose d'un classeur.
Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc
l'éxécution de mon code.
Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs.
Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
je ne sais pas sous quelle version d'Excel tu es et je ne suis pas sur que l'exemple ci-dessous s'applique exactement à ta question mais on verra bien.
Sous Excel 2000, ce que j'ai pu constater c'est que si on ouvre un fichier , appelons le fichier 2( par une macro d'un autre fichier , appelons le fichier 1) , et que si ce fichier 2 possède des macros automatiques d'ouverture et de fermeture , et que dans ces macros du fichier 2, on écrive une instruction de fermeture du fichier 2, alors l'exécution de la macro du fichier 1 s'interrompt.
Exemple. Soit un fichier appelé tata.xls qui possède la macro suivante
Sub LAUNCH workbooks.open D:toto.xls msgbox "c'est fini" end sub
et que dans le fichier toto.xls on ait 2 macros dans le module thisworkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "je me ferme" End Sub
Private Sub Workbook_Open() MsgBox "c'est moi" ThisWorkbook.Close End Sub
ce qui va se passer si on lance la Sub LAUNCH, c'est qu'on aura bien les deux messages MsgBox "c'est moi" et MsgBox "je me ferme" mais jamais le message msgbox "c'est fini", ce qui montre bien que c'est la fermeture de toto qui fait interrompre la macro LAUNCH, alors pourtant que toto ne possède aucune instruction à priori permettant celà.
Je ne suis donc pas sur que ce que je dis plus haut est une réplique même approximative de ce que tu décris. Ceci dit, il m'encline à penser que si tu as une macro principale qui ouvre des fichiers, il faut que ce soit cette macro qui les ferme aussi ( donc supprimer l'ordre de fermeture du fichier X par lui même si c'est le cas ) , car dans ce cas, l'exécution de la macro prinicpale sera complète.
A+
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a (entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
Yves
papou
Bonjour Regarde du côté de la propriété EnableEvents : Application.EnableEvents = False ActiveWorkbook.Close(True) Application.EnableEvents = True Cordialement Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit dans le message de news:d0n0l3$
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
Yves
Bonjour
Regarde du côté de la propriété EnableEvents :
Application.EnableEvents = False
ActiveWorkbook.Close(True)
Application.EnableEvents = True
Cordialement
Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit
dans le message de news:d0n0l3$mob2@news.rd.francetelecom.fr...
Bonjour,
J'ai introduit du code dans l'évènement beforeClose d'un classeur.
Lorsque je ferme ce classeur sous excel en interactif tout va bien,
lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y
a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc
l'éxécution de mon code.
Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs.
Existe-t-il qlq part une liste des instructions qui posent pb en pareil
cas.
Bonjour Regarde du côté de la propriété EnableEvents : Application.EnableEvents = False ActiveWorkbook.Close(True) Application.EnableEvents = True Cordialement Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit dans le message de news:d0n0l3$
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
Yves
Yves Chabirand
Merci Finalement c'est cette solution en tout ou rien qui me convient le mieux, d'autant que je n'ai que le code de la procédure de lancement a modifier et non pas celui de tous les classeurs "lancés". Yves
"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message news: #
Bonjour Regarde du côté de la propriété EnableEvents : Application.EnableEvents = False ActiveWorkbook.Close(True) Application.EnableEvents = True Cordialement Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit
dans le message de news:d0n0l3$
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y
a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.
Yves
Merci
Finalement c'est cette solution en tout ou rien qui me convient le mieux,
d'autant que je n'ai que le code de la procédure de lancement a modifier et
non pas celui de tous les classeurs "lancés".
Yves
"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message news:
#VleqkLJFHA.588@TK2MSFTNGP15.phx.gbl...
Bonjour
Regarde du côté de la propriété EnableEvents :
Application.EnableEvents = False
ActiveWorkbook.Close(True)
Application.EnableEvents = True
Cordialement
Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a
écrit
dans le message de news:d0n0l3$mob2@news.rd.francetelecom.fr...
Bonjour,
J'ai introduit du code dans l'évènement beforeClose d'un classeur.
Lorsque je ferme ce classeur sous excel en interactif tout va bien,
lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il
y
a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc
l'éxécution de mon code.
Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs.
Existe-t-il qlq part une liste des instructions qui posent pb en pareil
cas.
Merci Finalement c'est cette solution en tout ou rien qui me convient le mieux, d'autant que je n'ai que le code de la procédure de lancement a modifier et non pas celui de tous les classeurs "lancés". Yves
"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message news: #
Bonjour Regarde du côté de la propriété EnableEvents : Application.EnableEvents = False ActiveWorkbook.Close(True) Application.EnableEvents = True Cordialement Pascal
"Yves Chabirand" <yves.chabirand@(supprimer ceci)francetelecom.com> a écrit
dans le message de news:d0n0l3$
Bonjour, J'ai introduit du code dans l'évènement beforeClose d'un classeur. Lorsque je ferme ce classeur sous excel en interactif tout va bien, lorsque
c'est une macro qui pilote l'ouverture et la fermeture de ce fichier il y
a
(entre autres) un workbooks.add qui ne s'éxécute pas et qui plante donc l'éxécution de mon code. Y a t-il une façon particulière d'écrire le code, la gestion d'erreurs. Existe-t-il qlq part une liste des instructions qui posent pb en pareil cas.