[Résolu][Calc] Figer l'écran pendant l'exécution de code

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 !
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

[Résolu][Calc] Figer l'écran pendant l'exécution de code

Message par Fredox »

Bonjour,
Est-ce que quelqu'un sait si s'est possible ?
Sous Excel s'est possible en mettanten début de code l'instruction suivante :
Application.ScreenUpdating = False

Merci
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Message par Dude »

28 messages et toujours pas habitué à la recherche ?
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

Recherche

Message par Fredox »

Merci de la remarque, j'avais éffectivement déja fait une recherche, mais la seule réponse au mot "Figer" si je fais une recherche dans le forum Macro ets le fil suivant est : ttp://www.forum-openoffice.org/forum/setopic_493-figer.html

En fait j'ai mal formuler ma question, erreur de ma part:

Je voudrait plus exactement "figer l'affichage" - en fait empêcher de déroulement de l'affichage d'une cellule a une autre pendant l'éxécution de la macro.

Si je clic sur mon boutton d'execution de la macro, que mon curseur reste dans la cellule ou il se trouve et que l'affichage ne bouge pas.

Je ne sais pas si s'est possible.
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: Comment figer l'écran pendant l'execution d'une macro ?

Message par Jeff »

Bonjour,

Je pense que l'objet de ta recherche est dans ta question :
Fredox a écrit :Application.ScreenUpdating
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Personnellement, je n'utilise pas le "lockcontroller" évoqué dans les fils obtenus par la recherche. En effet, cette méthode n'inhibe pas les frappes de touches : elles sont "bloquées" puis les "libérées".

Ci-dessous différentes techniques complémentaires :

Code : Tout sélectionner

sub ExoBloquerEcran

dim fenDoc as Object, PysProv as object

fenDoc = thisComponent.CurrentController.Frame.ContainerWindow
fenDoc.Enable = False
fenDoc.SetVisible(false) 

'PysProv = starDesktop.loadComponentFromUrl("private:factory/scalc", "_blank", 0, Array())
'PysProv.sheets(0).getCellRangeByName("C10").formula="Travail en cours..."

' simulation de la réalisation du travail
thiscomponent.CurrentController.ActiveSheet.getcellRangeByName("A1").formula="test"
wait 4000 
'on error resume next
'PysProv.close(true)
'on error goto 0

fenDoc.SetVisible(true) 
fenDoc.Enable = True
fenDoc.setFocus

end sub
Nota :
- l'exemple inclut une temporisation de 4 secondes pour permettre de tester que la frappe de touches pendant cette période ne sera pas répercutée à la fin dans la feuille (vs avec lockcontroller).
- la technique masquant la fenêtre est un peu "radicale" :)
- la technique d'ouvrir un document temporaire est une alternative à la gestion d'une barre de progression (on peut aussi afficher un formulaire ou un dialogue)

En complément, il peut être intéressant d'inhiber le recalcul automatique le temps d'exécution de certaines macros (ne pas oublier de rétablir ensuite) :

Code : Tout sélectionner

sub ExoCalculInhiber
thisComponent.enableAutomaticCalculation(false)
end sub 

sub ExoCalculRetablir
thisComponent.enableAutomaticCalculation(true)
thisComponent.calculate		'mise à jour des formules modifiées
thisComponent.calculateAll
end sub 
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

...

Message par Fredox »

Merci pour vos réponses, mais j'ai du mal m'expliquer en fait, car ce que je veut, c'est figer la page, faire en sorte de ne pas voir la macro s'exécutée par un défiler dans mes 50 cellules qui se modifient.
Mais je n'arrive pas à l'expliquer correctement.

Merci quand même
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Message par Dude »

Eventuellement masquer la feuille pendant l'opération.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: ...

Message par Pierre-Yves Samyn »

Fredox a écrit :Merci pour vos réponses, mais j'ai du mal m'expliquer en fait, car ce que je veut
C'est plutôt moi qui me suis mal expliqué, pensant que la recherche indiquée par Jeff te donnerait la réponse (lockControllers) j'ai étendu la question du rafraichissement de l'écran au contrôle des frappes de touches. Ci-dessous donc une procédure réalisant les deux...

Code : Tout sélectionner

sub ExoBloquerEcranEtTouches

dim fenDoc as Object

thisComponent.lockControllers
fenDoc = thisComponent.CurrentController.Frame.ContainerWindow
fenDoc.Enable = False
thiscomponent.CurrentController.ActiveSheet.getcellRangeByName("A1").formula="test"
wait 4000 ' simulation de la réalisation du travail
fenDoc.Enable = True
thisComponent.UnlockControllers

end sub