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

Pb d'éxécution si classeur ouvert et fermé par du VBA

3 réponses
Avatar
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.

Yves

3 réponses

Avatar
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





Avatar
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




Avatar
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