Bonjour,
j’ai eu le meme souci que j’ai résolu comme ceci.
Dans mes macros, je rajoute celle ci.
Sub on_ApplicationStart( oEvent As Object )
REM Should be connected to the "Start Application" event of LibreOffice.
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SwitchControlDesignMode"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
End Sub
Ca fonctionne bien, sauf si le document (un template par exemple) est disponible sur un site web. Le fait que l’ods ouvert bascule en edit mode va remettre le design mode en off. La solution? Proposer un ots (template), dans ce cas ci.
Testé sur linux, windows, fonctionne à tout coup, avec un utilisateur qui ouvre donc le document ots (accepte les macros) et peut donc cliquer sur les boutons (= macro) sans passer par la case oter le design mode.
Si l’on veut que ca fonctionne sur un .ods, stocké sur un site web, il suffit que la personne utilisant libreoffice associe, dans la partie “customize”, l’event “modified status was changed” avec cette macro stockée dans les macros de l’utilisateur “My Macros”.