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”.