[Résolu][Calc] Rafraîchir écran : équivalent ScreenUpdating

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Rafraîchir écran : équivalent ScreenUpdating

Messagepar Péna » 28 Juin 2006 15:18

bonjour tout le monde! :D

petite info:

depuis longtemps je cherche comment traduire :

Code : Tout sélectionner   AgrandirRéduire
Application.ScreenUpdating = False


Vu le nombre de questions sur ce sujet, j'ai pensé sympa de mettre un post la dessus car en me rendant sur le forum anglais de OOo, j'ai trouvé une traduction, certe discutable mais qui marche pour certains cas...

ms777 propose pour pallier au problème de rafraichissement d'écran (et donc à la vitesse d'exécution de la macro) d'utiliser les lignes suivantes:

Code : Tout sélectionner   AgrandirRéduire
sub setACC(OnOff as boolean)
   ThisComponent.enableAutomaticCalculation(OnOff)
end sub

sub ScreenUpdatingOn
   ThisComponent.UnlockControllers
   ThisComponent.removeActionLock
end sub

sub ScreenUpdatingOff
   ThisComponent.addActionLock
   ThisComponent.LockControllers
end sub



Malheureusement, jcdavid prévient que "LockControllers"n'est pas la traduction exacte de "screenupdating", et que par conséquent, cela peut poser problème. En fait, "LockController" ne fait pas qu'empécher le raffraichissement de l'écran, mais bloque aussi certaines fonctions comme "GotoEndOfUsedArea". En fait dans le lien qu'il fournit pour se justifier, il y a une très simple explication à ce phénomène (donnée par Cybb20) :

Si on utilise dans la macro des instructions telles que viewcursor (ou tout autre fonction qui dépend de la vue du document) LockController les empêchera de bien fonctionner. En fait, elle fonctionneront, mais pas sur la page prévue puisque celle-ci ne sera pas affichée. Elles fonctionneront sur la page qui était visible lorsque l'on a utilisé LockController. Il s'agit d'une méthode qui est très efficace du moment que l'on n'utilise rien qui dépende de la vue en cours.

moralité : LockController est un outils très efficace, peut-être trop...

voici le lien:

http://www.oooforum.org/forum/viewtopic.phtml?t=21072&highlight=screenupdating

vOOoila vOOoila
en espérant que cela serve à quelqu'un...
bye

PS1 : veuillez m'excuser si il y a des petites erreurs de traductions, je ne suis pas bilingue, héhé, et si par ailleurs, quelqu'un s'aperçoit que j'ai commis une grossière erreur de traduction, libre à lui de corriger ma traduction :wink: merci

PS2 : je n'ai traduis que les lignes importantes de ce lien, je n'ai pas cherché à traduire tous les liens.... mais si quelqu'un veut une explication sur l'un des liens présents dans ce lien, je me ferai une joie d'y répondre :) . Ou tout simplement, si je n'ai pas été clair, lol
Dernière édition par Péna le 29 Juin 2006 16:54, édité 1 fois.
OOo 2.0.3 sous Windows XP SP2
Avatar de l’utilisateur
Péna
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 70
Inscrit le : 01 Juin 2006 15:27
Localisation : Toulouse

Messagepar Péna » 28 Juin 2006 16:52

je viens d'essayer cette solution, à savoir:

Code : Tout sélectionner   AgrandirRéduire
DocNewFile.addActionLock
DocNewFile.LockControllers


je n'ai eu aucun problème lors de l'exécution, et j'ai constaté une nette amélioration du temps d'exécution. La macro que j'ai lancé est très conséquente et donc permet d'avoir un bon ordre d'idée.

Je précise que la version utilisée de OOo est la 2.02.

J'ai lancé ma macro sur 2 ordi différents:
- Ordi 1 : Dell Inspiron XPS Gen2, Pentium M 2.13GHz, 1Go de Ram
- Ordi 2 : P4 2.4 GHz, 768Mo de Ram

les résultats sont hallucinants!

Résultats sous OOo:

Sur l'Ordi 1: avec la solution précédente: 16 sec (en moyenne)
sans la solution précédente: 43 sec (en moyenne)

Sur l'ordi 2: avec la solution précédente: 46 sec (en moyenne)
sans la solution précédente: 1min13sec (en moyenne) :shock:

Résultats sous Excel:

Sur l'Ordi 1: avec screenupdating: 3 sec (en moyenne)
sans screenupdating: 6 sec (en moyenne)

Sur l'ordi 2: avec la solution précédente: 3 sec (en moyenne)
sans la solution précédente: 9sec (en moyenne)

voila!
c'était juste à titre d'indication. Bon certes on s'en doutait un peu, m'enfin.... ça peut être intéressant.


vOOoila vOOoila

à plus
OOo 2.0.3 sous Windows XP SP2
Avatar de l’utilisateur
Péna
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 70
Inscrit le : 01 Juin 2006 15:27
Localisation : Toulouse

Re: [Calc] Rafraichissement écran : équivalent de ScreenUpda

Messagepar Churay » 25 Oct 2013 15:01

Bonjour

Sur l'utilisation de lockControllers, il peut être instructif de lire Pys (Pierre-Yves Samyn) ici viewtopic.php?f=8&t=5065&hilit=LockController
cOOordialement
---
AOO 4.0.1 & LO divers 3.4.x.x à 3.7.x.x XP-SP3 / Debian 7.1 & Ubuntu 12.10
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
HédOOniste
HédOOniste
 
Message(s) : 2145
Inscrit le : 30 Avr 2009 05:54
Localisation : PACA

Re: [Calc] Rafraichissement écran : équivalent de ScreenUpda

Messagepar Wayra » 25 Oct 2013 15:05

Sujet déplace : que faisait-il dans les Suprêmes ?
OOo 2.4.x, 3.2.1 & LO 3.4.3 sous divers OS

Pensez à la touche F1... Par exemple pour les formules de Calc :
F1 --> Classeurs --> Type de Fonctions et Opérateurs
Avatar de l’utilisateur
Wayra
MOOdérateur
MOOdérateur
 
Message(s) : 76
Inscrit le : 10 Oct 2009 19:28
Localisation : Vitrolles 13


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)