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

Un bout de code plein de malice!!!

29 réponses
Avatar
MichD
Bonjour,

Ce bout de code à la fin de la procédure. Si je l'exécute par F8 (pas à
pas), tout est OK. Sauf que l'on exécute cette procédure 2 à 4 fois
de manière rapprochée, cela fait planter Excel et il est obligé de
fermer. J'ai ajouté des boucles à titre de temporisation, cela ne change
en rien le résultat...

Est-ce que quelqu'un a une explication?

'=============================================================
ThisWorkbook.Sheets.Copy

'--------------------------------------
T = Timer + 2
Do While Timer < T
DoEvents
Loop
'--------------------------------------

Set Wk = ActiveWorkbook
Wk.SaveAs ThisWorkbook.Path & "\" & Nom, FileFormat:=51

'--------------------------------------
T = Timer + 2
Do While Timer < T
DoEvents
Loop
'--------------------------------------

Application.DisplayAlerts = True
ThisWorkbook.Close False
Application.ScreenUpdating = True
Set Wk = Nothing
'=============================================================


Merci pour votre collaboration.

Denis

10 réponses

1 2 3
Avatar
Geo
Bonjour Denis
Si ton code est dans un classeur, je suppose que ça doit lui faire
drôle de continuer à se dérouler alors que le classeur est fermé.
Avatar
MichD
Bonjour Géo,
Tu as peut-être raison. Comment expliques-tu alors que le code
s'exécute normalement 2 fois consécutives et fait planter Excel lors
de la troisième exécution!
J'ai réglé le problème, j'ai mis Excel à la poubelle! ;-))
Merci pour ton intervention.
MichD
Avatar
Geo
Tu as peut-être raison. Comment expliques-tu alors que le code
s'exécute normalement 2 fois consécutives et fait planter Excel lors
de la troisième exécution!

Le temps que la mémoire se vide ou que le processus disparaisse ?
Sérieusement, je ne sais pas.
Avatar
Jacky
Bonjour Denis
Même plantage chez moi.
J'ai déjha constater ce problème
Dans un de mes anciens classeur sous xl2003, ce genre de code
fontionnait parfaitement, au passage vers xl2007 plantage.
Sans vraiment comprendre pourqoi...j'ai mis cela sur le compte d'un
bug.
Dans mon classeur j'ai pu résoudre le problème par un
"Application.quit".Donc plus de lancement successif.
Maigre consolation ;o)
Ps: J'ai supposé que la variable "Nom" était attribué
Salutations
JJ
MichD a exposé le 09/06/2016 :
Bonjour,
Ce bout de code à la fin de la procédure. Si je l'exécute par F8 (pas à pas),
tout est OK. Sauf que l'on exécute cette procédure 2 à 4 fois
de manière rapprochée, cela fait planter Excel et il est obligé de fermer.
J'ai ajouté des boucles à titre de temporisation, cela ne change en rien le
résultat...
Est-ce que quelqu'un a une explication?
'============================================================ > ThisWorkbook.Sheets.Copy
'--------------------------------------
T = Timer + 2
Do While Timer < T
DoEvents
Loop
'--------------------------------------
Set Wk = ActiveWorkbook
Wk.SaveAs ThisWorkbook.Path & "" & Nom, FileFormat:Q
'--------------------------------------
T = Timer + 2
Do While Timer < T
DoEvents
Loop
'--------------------------------------
Application.DisplayAlerts = True
ThisWorkbook.Close False
Application.ScreenUpdating = True
Set Wk = Nothing
'============================================================ >
Merci pour votre collaboration.
Denis
Avatar
Jacquouille
Hello Denis,
Juste une idée venant du cerveau vide d'un ignorant.....
Ton vieil Excel, il ne ferait pas comme mon cerveau: oublier de remettre les
variables à l'heure?
Tu es certain qu'il reprend bien le dernier Timer, et qu'il ne garde pas en
mémoire le premier Timer?
T = Timer + 2
Do While Timer < T
DoEvents
Loop

Et si tu essayais une var à la place de 2 et qui s'incrémenterait de 1 à
chaque boucle.
Tu pourrais contrôler aussi la valeur de T après chaque boucle.
Bonne chance.
Jac
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
Bonjour Géo,
Tu as peut-être raison. Comment expliques-tu alors que le code
s'exécute normalement 2 fois consécutives et fait planter Excel lors
de la troisième exécution!
J'ai réglé le problème, j'ai mis Excel à la poubelle! ;-))
Merci pour ton intervention.
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Bonjour Jacky,
Je suis d'accord avec toi, j'ai fait cela et je n'ai jamais eu un
problème avec les anciennes versions. Comme Géo et Jacquoille y font
référence, c'est peut-être une gestion de mémoire...mais moi, je ne me
souviens pas avoir eu autant de problèmes avec quelques lignes de code!
Dans la même application, j'ai eu tout un problème avec le
déverrouillage de cellules alors que certaines doivent demeurer
verrouillées, et cela sur des plages où il y a plusieurs cellules
fusionnées.
Je n'exposerai pas le problème, ce serait trop long à expliquer et je ne
peux pas publier l'application. C'est décevant d'éprouver ces
difficultés sur des actions de base sur la version Excel 2016.
Mon application est terminée. C'est navrant de devoir passer un temps
fou sur de pareils trucs!
Merci à tous pour vos remarques.
MichD
Avatar
MichD
Bonjour Jacky,
Je suis d'accord avec toi, j'ai fait cela et je n'ai jamais eu un
problème avec les anciennes versions. Comme Géo et Jacquoille y font
référence, c'est peut-être une gestion de mémoire...mais moi, je ne me
souviens pas avoir eu autant de problèmes avec quelques lignes de code!
Dans la même application, j'ai eu tout un problème avec le
déverrouillage de cellules alors que certaines doivent demeurer
verrouillées, et cela sur des plages où il y a plusieurs cellules
fusionnées.
Je n'exposerai pas le problème, ce serait trop long à expliquer et je ne
peux pas publier l'application. C'est décevant d'éprouver ces
difficultés sur des actions de base sur la version Excel 2016.
Mon application est terminée. C'est navrant de devoir passer un temps
fou sur de pareils trucs!
Merci à tous pour vos remarques.
MichD
Avatar
MichD
Bonjour Jacky,
Je suis d'accord avec toi, j'ai fait cela et je n'ai jamais eu un
problème avec les anciennes versions. Comme Géo et Jacquoille y font
référence, c'est peut-être une gestion de mémoire...mais moi, je ne me
souviens pas avoir eu autant de problèmes avec quelques lignes de code!
Dans la même application, j'ai eu tout un problème avec le
déverrouillage de cellules alors que certaines doivent demeurer
verrouillées, et cela sur des plages où il y a plusieurs cellules
fusionnées.
Je n'exposerai pas le problème, ce serait trop long à expliquer et je ne
peux pas publier l'application. C'est décevant d'éprouver ces
difficultés sur des actions de base sur la version Excel 2016.
Mon application est terminée. C'est navrant de devoir passer un temps
fou sur de pareils trucs!
Merci à tous pour vos remarques.
MichD
Avatar
MichD
Ce triple message, un cadeau de Thunderbird!
Avatar
JièL
Le 09/06/2016 à 21:20, Geo a écrit :
Tu as peut-être raison. Comment expliques-tu alors que le code
s'exécute normalement 2 fois consécutives et fait planter Excel lors
de la troisième exécution!

Le temps que la mémoire se vide ou que le processus disparaisse ?
Sérieusement, je ne sais pas.

Moi je tenterais bien une initialisation de variable qui n'est pas
"désinitialisé" vu que le code se termine alors que le classeur est fermé
l'initialisation
Set Wk = ActiveWorkbook
la "désinitialisation" qui ne se fait pas
Set Wk = Nothing
et comme le classeur est fermé ça fout le bronx dans la mémoire
Mais bon, j'dis ça, j'dis rien ;-)
De même que je soupçonne le Application.ScreenUpdating = True de ne pas
s'exécuter et qu'il doit y avoir un Application.ScreenUpdating = False
qqpart
Bref, le Application.Quit de Jacky me semble une """bonne""" solution
(de contournement)
--
JièL dix heure
1 2 3