Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Bonjour,

Le 29/05/2017 à 16:00, demande_aide_fr@libreoffice.org a écrit :
je cherche à suspendre la fonction recalcul automatique de calc par
macro en vain. Cordialement PS : de très nombreux recalculs
ralentissent le traitement lors de déplacements dans la feuille
principale

C'est peut-être possible autrement, mais voici une solution via le Dispatcher.


Sachant que le menu dans lequel se trouve l'option est
Données > Calculer > Calculer automatiquement
(c'est une bascule)

Et que, pour UNO, la commande correspondante est ".uno:AutomaticCalculation"

Alors, le sous-programme suivant (qui fait appel au dispatcher) devrait convenir. Ce sous-programme permet d'exécuter des commandes UNO correspondant à des menus.

Le commentaire dans le sous-programme indique où trouver l'ensemble des commandes kivonbien... Pour Calc spécifiquement, j'ai regardé dans répertoire d'installation LibreOffice, ss-rép /share/config/soffice.cfg/modules/scalc/menubar
Par ex. dans mon Linux, c'est
/opt/libreoffice5.3/share/config/soffice.cfg/modules/scalc/menubar


8< ---------------------------------------------------------

Sub _UNOCommand(ByRef pUnoCmd As String, Optional pArgs() As Variant)
'runs any UNO menu command, in pUnoCmd.
'The optional pArgs() allows to add command arguments.
'There is no control on the command passed.
'
'The common menu commands are available in the menubar.xml file, available in 'LibreOffice install directory, subdir /share/config/soffice.cfg/modules/sglobal/menubar

Dim lo_Frame As Variant
Dim lo_Dispatch As Object
Dim l_Args() As Variant
        
If Not IsMissing(pArgs) Then l_Args() = pArgs()

lo_Frame = ThisComponent.CurrentController.Frame
lo_Dispatch = createUnoService("com.sun.star.frame.DispatchHelper")
        
lo_Dispatch.executeDispatch(lo_Frame, ".uno:" & pUnoCmd, "", 0, l_Args())

End Sub '_UNOCommand

--------------------------------------------------------- >8

Dans votre cas, l'appel serait ainsi :

_UNOCommand("AutomaticCalculation")

Le 1er appel désactive, le second re-active.


Dans ce cas, il n'est pas utile de passer d'autres paramètres. Certaines entrées de menu peuvent cependant le nécessiter. Par exemple, pour afficher (ou masquer) le volet latéral ("Sidebar" en anglais), il faudrait écrire ceci :

Dim l_Args(0) As New com.sun.star.beans.PropertyValue

l_Args(0).Name  = "Sidebar"
l_Args(0).Value = True 'pour afficher / False pour masquer

_UNOCommand("Sidebar", l_Args())

En espérant avoir aidé.


Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.

Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux


--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.