Gixeo
Messages postés3Date d'inscriptionlundi 25 octobre 2010StatutMembreDernière intervention25 octobre 2010
-
25 oct. 2010 à 11:01
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
25 oct. 2010 à 15:33
Bonjour,
Si quelqu'un as un petit peu de temps à m'accorder, j'ai un problème que je n'arrive pas a résoudre...
A la fin d'une macro assez lourde (ouvrant, copiant et refermant des fichiers plutot lourds et enregistrant un fichier Visio en .htm) je souhaite modifier le fichier Widgets.htm généré par un autre que j'ai auparavant modifié?
Pour le remplacer j'utilise cette instruction à la fin de ma macro :
'Suppression du fichier "widgets.htm" d'origine.
Kill (DestinationWidgets)
'Copie le fichier "widgets Mod Zoom.htm" et le colle sous le nom de "widgets.htm"
'à l'emplacement du fichier "widgets.htm" d'origine.
FileCopy SourceWidgets, DestinationWidgets
Lorsque je lance ma macro en pas à pas, aucun problème, tout s'éxécute a merveille, le fichier widgets est bien supprimé puis remplacé par celui que j'ai modifié?
Mais lorsque je l'exécute simplement (avec F5) c'est une toute autre histoire? cette partie de code n'est tout simplement pas réalisé?
Je ne reçois aucun message d'erreur, mais le fichier que je souhaite supprimer ne l'est pas, et le copier collé de celui modifié n'est aps réalisé!
Mon PC etant tres poussif je me suis dis que l'instruction "Sleep" pourrais m'aider, histoire de la laisser souffler, mais cela ne change rien...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 25 oct. 2010 à 11:26
Pas Sleep qui suspend l'exécution en cours, mais plutôt DoEvents qui rend la main au système et qui peut lui laisser le temps, peut-être de faire la suppression avant que tu ne lance la copie
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Gixeo
Messages postés3Date d'inscriptionlundi 25 octobre 2010StatutMembreDernière intervention25 octobre 2010 25 oct. 2010 à 11:39
euh... Pourrais tu m'expliquer comment utiliser DoEvents?
Cela ne fais pas tres longtemps que je programme.
Et l'aide de MS Office n'est pas réellement mon amie...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 25 oct. 2010 à 12:01
Tu rajoute simplement l'instruction DoEvents sur la ligne qui suit Kill(...)
DoEvents permet de rendre la main quelques ms au système pour que celui-ci traite diverses actions comme par exemple rafraichir l'écran, traiter les évènements en attente, etc, ....
Cela se fait normalement entre chaque instruction, mais il arrive, dans des boucles par exemple que l'exécution des instructions soit enchainée sans que le système ait la possibilité de reprendre la main. Une des conséquence c'est par exemple dans des boucles longues, d'avoir l'écran de l'application qui devient tout blanc, ou Windows qui indique que l'application ne répond plus. De mettre un DoEvents dans la boucle, permettra de rafraichir l'écran ou de traiter les messages que Windows envoie à l'application et évite ainsi de donner l'impression que l'application est plantée
Il n'est pas dit que ça solutionne ton problème, mais le système ayant un tout petit peu plus de temps, pourra faire la suppression du fichier avant que tu n'essaye de faire la copie.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i