Bonjour,

Le 29/05/2017 à 16:00, demande_aide...@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+unsubscr...@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

Répondre à