[Résolu][Calc] Figer l'écran pendant l'exécution de code
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 83
- Inscription : 28 oct. 2006 13:55
[Résolu][Calc] Figer l'écran pendant l'exécution de code
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
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)
Continu de bricoler sous Calc (mais en net progrès)
-
- IdOOle de la suite
- Messages : 25184
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
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
Améliorez AOO et votez pour les issues
-
- Membre OOrganisé
- Messages : 83
- Inscription : 28 oct. 2006 13:55
Recherche
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.
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)
Continu de bricoler sous Calc (mais en net progrès)
-
- GourOOu
- Messages : 9629
- Inscription : 18 sept. 2006 09:40
- Localisation : France
Re: Comment figer l'écran pendant l'execution d'une macro ?
Bonjour,
Je pense que l'objet de ta recherche est dans ta question :
Je pense que l'objet de ta recherche est dans ta question :
Fredox a écrit :Application.ScreenUpdating
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
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 :
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) :
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
- 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
-
- Membre OOrganisé
- Messages : 83
- Inscription : 28 oct. 2006 13:55
...
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
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)
Continu de bricoler sous Calc (mais en net progrès)
-
- IdOOle de la suite
- Messages : 25184
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
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
Améliorez AOO et votez pour les issues
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Re: ...
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...Fredox a écrit :Merci pour vos réponses, mais j'ai du mal m'expliquer en fait, car ce que je veut
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