|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Philippe LEVERTParamétreur de progiciels Inscription : mars 2008 Messages : 6 ![]() |
suite à notre discussion sur erreur d'automation
J'aimerai accélérer les échanges entre ces fichiers Je vous dit tout, c'est pour traiter très rapidement des QCM L'environnement est le suivant: Word est fermé un fichier .doc contient des cases à cocher, les cases à cocher sont parfois séparées par des paragraphes de niveau 3, ce qui permet de lancer sous Word le code suivant: Code :
|
||
|
|
00
|
|
|
#2 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Si tu ouvres une instance de Word, tu auras toujours un problème de délai.
Et là, comme une macro est lancée dans word (je pense que c'est à l'ouverture du fichier) je ne vois pas bien comment réduire ce délai |
|
|
00
|
|
|
#3 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut,
Pour accélérer Word, empêches les mises à jour d'écran ==> interdit les mises à jour d'écran par le code mais n'hésitez pas à utiliser une ruse qui consiste à ne pas faire voir les modif en déclarant un écran de visualisation en dehors de ton écran réel et de faire "afficher" Word dedans. C'est surprenant, le gain est parfois un facteur 10 |
|
|
00
|
|
|
#4 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Hello Sepia,
Deux questions : - Si on met "wdApp.Visible = False", il est malgré tout nécessaire de déclarer un écran de visualisation en dehors de l'écran réel ? - Comment fait-on ça ? Merci de tes réponses, c'est un domaine que je ne connais pas. Bonne soirée |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Philippe LEVERTParamétreur de progiciels Inscription : mars 2008 Messages : 6 ![]() |
Bonjour Sepia,
Même question: déclarer un écran de visualisation en dehors de l'écran réel ? - Comment fait-on ça ? Merci de ta réponse |
|
|
00
|
|
|
#6 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut,
Il te faut au moins 2 sorties écran sur ton PC. Dans ce cas tu ouvres ton Word et tu déplaces la fenêtre sur le 2ieme ecran, tu lances ta macro et tu éteins ton écran. Si tu veux quand même parfois regarder, tu lances ta macros et déplaces ta fenêtre de façon à n'avoir qu'un bout (qui ne bouge pas = le bord de ta fenêtre quoi). Remarque : pour savoir quand ta macro est finie, il faut que tu termines par un signal sonore (série d'instructions beep(), par exemple) Si tu n'as pas de sortie écran multiple, tu peux aussi faire pareil: tu lances ton word avec sa macro et tu couvres l'écran (attention, l'écran pas la fenêtre avec une application à fenêtre en mode plein écran, mais pas Word) |
|
|
00
|
|
|
#7 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Quel intérêt cela offre-t-il sur AppWd.visible = false (puisque dans ce cas précis, l'affichage n'est pas utile) ?
Je comprends le principe mais j'avoue que je ne vois toujours pas ce que ça apporte. Par contre, je viens de me souvenir que, bien qu'aucun mouvement d'écran ne soit provoqué par le code, application.screenUpdating = false accélère les procédures dans Excel. Il serait peut-être intéressant de tester ça dans Word. Avant d'ouvrir le doc, ajouter Code :
A+ |
||
|
|
00
|
|
|
#8 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut,
Dans l'absolu, tu as raison ouskel'n'or mais il y a une énorme différence entre "ne pas faire voir" et "ne pas mettre à jour" sous Windows et particulièrement avec Office. Lorsque tu fais "ne pas mettre à jour" (screenUpdating = false), Word masque les mises à jour dans Word mais lance toutes les procédures d'affichage globales Windows (mise à jour des intitulés de fenêtre, mise à jour de l'application active dans la barre de tâche... et surtout Word repagine en arrière-plan dès que tu fais appel à des entêtes différentes) ==> donc presque à chaque section pour un doc normal. Bien sûr, il optimise mais le gain de temps n'est que de l'ordre de 7 à 8 alors que si tu arrives à dire à Windows de "ne pas faire voir", le gain est alors d'un facteur 12 à 35 (tests effectués une dizaine de fois sur différents documents de 80 à 750 pages avec des images et des tableaux). Bien sûr, il y a aussi les options d'affichage (ne pas afficher les dessins, ne pas se mettre en mode page...) et de sauvegarde (ne effectuer de sauvegarde automatique), mais ça je pense que lorsque tu regardes des optimisations de traitement, c'est que ces paramètres ont déjà été virés. Mais le gain est relativement faible (facteur 2 à 4) alors que screenUpdating = false et surtout "ne pas faire voir" sont tellement plus importants @+ |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Inscription : juin 2008 Messages : 1 036 ![]() |
Bonsoir,
eu.... c'est un troll ce post ..? Citation:
Jacques. |
|
|
|
00
|
|
|
#10 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Non, non, le but est que Windows (et pas seulement Word) ne fasse pas de rafraichissement d'écran ==> une des solutions est bien de l'éteindre.
Ce genre de truc n'est pas rare avec les macros en général, lorsqu'il s'agit de tâches répétitives qui ne nécessitent pas d'intervention humaine une fois lancées, comme des purges massives, des changements globaux, ou une compilation d'une doc (c'est souvent mon cas, on gère les doc des softs que l'on développe via une macro, elle-même lancée via ant qui génère le manuel utilisateur en multi-langues, intègre les fichiers des icônes pour les mises à jour, génère le site Web d'aide en ligne, lance la javadoc associée et l'intègre dans les différentes aides des softs que l'on embarque dans les notres. Ah oui, on la compile aussi en PDF ==> actuellement 750 pages en version française). Donc non ce n'est pas un troll |
|
|
00
|
|
|
#11 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
En l'occurence, le document n'a pas à subir de modification. Pas de mise à jour, pas de gestion d'icônes, pas de compilation en pdf, une simple lecture des données qu'il contient. Je pense que dans ce cas on peut se contenter des méthodes classiques, wdApp.screenUpdating = false et wdApp.Visible = False.
Déjà, ça donnera une indication sur le gain de temps. Il serait également intéressant de connaître le temps mis par word pour s'ouvrir. Pour le déterminer, un message affiché sitôt l'application ouverte permettrait de savoir s'il n'est pas la cause principale de la lenteur observée. Sur mon micro, lors de l'install, Word mettait moins de deux secondes pour s'ouvrir. Avec les mises à jour d'Office 2003 il met maintenant près de 30 secondes (!) Word 97 persiste lui à s'ouvrir dans la seconde. Je crois qu'Heureux Oli a parlé de ce phénomène quelque part mais je ne retrouve plus où. Je verrais d'abord s'il ne s'agit pas de ça. Bonne journée |
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
On pourrais envisager de créer une nouvelle instance de Word sans plus, elle sera présente dans les processus de l'os, mais juste pour un traiement du document.
Et seulement à la fin du processus afficher cette instance. C'est utiliser un soucis fréquent en avantage. Pour preuve : Code :
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
|
|
#13 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
J'abonde !
Mais si cette application est en tâche de fond, donc lancée par une autre appli, pour récupérer l'application, on fait comment ? pour lui dire au bon moment, "va ouvrir le fichier.doc de mes voeux !" Je sais que ça peut se faire pour la fermer, donc certainement pour l'utiliser aussi, mais depuis que j'ai nettoyé mon disque dur, je n'ai plus la syntaxe |
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
C'est pas trop compliqué, il suffit au bon moment de faire un .Visible = True
Je ne sais plus comment mais on peut lors de la création de l'objet Word récupérer son ID et l'ouvrir par cet ID.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#15 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Citation:
Citation:
Bon, il va falloir que j'aille fouiller mon "vieux" disque dur si je veux retrouver la syntaxe... |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com