J'ai créé un bouton qui me lance une macro pour créer un bouton, mais je n'arrive pas via oooBasic à assigner ma macro "Message" au bouton que j'ai créé.
Si quelqu'un a une petite idée ca m'aiderai bien

Merci et bonne journée
Modérateur : Vilains modOOs
Il serait plus simple de masquer le 2e bouton et de l'afficher lorsqu'on clique sur le 1er.
Code : Tout sélectionner
Sub AjouterBoutonAvecPosition
Dim oDoc As Object
Dim oFeuille As Object
Dim oDrawPage As Object
Dim oForm As Object
Dim oBouton As Object
Dim oControlShape As Object
' Récupérer le document et la feuille active
oDoc = ThisComponent
oFeuille = oDoc.CurrentController.ActiveSheet
oDrawPage = oFeuille.DrawPage
' Créer le bouton
oBouton = oDoc.createInstance("com.sun.star.form.component.CommandButton")
oBouton.Name = "MonSuperBouton"
oBouton.Label = "Clique-moi"
Dim oEvent As New com.sun.star.script.ScriptEventDescriptor
oEvent.EventMethod = "actionPerformed"
oEvent.ScriptType = "Script"
oEvent.ScriptCode = "vnd.sun.star.script:Standard.Module1.MacroCible?language=Basic&location=document"
oEvent.ListenerType = "XActionListener"
' oBouton.addScriptListener(oEvent)
' Créer le formulaire
oForm = oDoc.createInstance("com.sun.star.form.component.Form")
oForm.Name = "Message"
oForm.insertByIndex(0, oBouton)
' Ajouter le formulaire à la feuille (via DrawPage)
oDrawPage.Forms.insertByIndex(0, oForm)
' Créer la forme associée au contrôle
oControlShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")
' Définir la taille et position AVANT de l’ajouter à la page
Dim oSize As New com.sun.star.awt.Size
oSize.Width = 3000 ' En 1/100 mm => 3000 = 3 cm
oSize.Height = 1500 ' 1.5 cm
oControlShape.Size = oSize
Dim oPosition As New com.sun.star.awt.Point
oPosition.X = 5000 ' 5 cm depuis la gauche
oPosition.Y = 4000 ' 4 cm depuis le haut
oControlShape.Position = oPosition
oControlShape.Control = oBouton
' Ajouter le bouton à la feuille
oDrawPage.add(oControlShape)
End Sub
Sub Message
MsgBox("test touton")
End Sub
Gestionnaire d'affectation d'événement : https://www.openoffice.org/api/docs/com ... nager.html
Bis repetitae
Ce genre de phrase n'aide pas à comprendre ce qui t'arrive.
Il est d'usage sur un forum de partager en mettant en ligne un document exposant ce contournement.
Code : Tout sélectionner
Sub AjouterBoutonAvecPosition
Dim oDoc As Object
Dim oFeuille As Object
Dim oDrawPage As Object
Dim oForm As Object
Dim oBouton As Object
Dim oControlShape As Object
' Récupérer le document et la feuille active
oDoc = ThisComponent
oFeuille = oDoc.CurrentController.ActiveSheet
oDrawPage = oFeuille.DrawPage
' Créer le bouton
oBouton = oDoc.createInstance("com.sun.star.form.component.CommandButton")
oBouton.Name = "MonSuperBouton"
oBouton.Label = "Clique-moi"
Dim oEvent As New com.sun.star.script.ScriptEventDescriptor
With oEvent
.EventMethod = "actionPerformed"
.ScriptType = "Script"
.ScriptCode = "vnd.sun.star.script:Standard.Module1.Message?language=Basic&location=document"
.ListenerType = "XActionListener"
End with
'oBouton.addScriptListener(oEvent)
' Créer le formulaire
oForm = oDoc.createInstance("com.sun.star.form.component.Form")
oForm.Name = "Message"
oForm.insertByIndex(0, oBouton)
oForm.registerScriptEvent(0, oEvent) '<- ajout de l'événement
' Ajouter le formulaire à la feuille (via DrawPage)
oDrawPage.Forms.insertByIndex(0, oForm)
' Créer la forme associée au contrôle
oControlShape = oDoc.createInstance("com.sun.star.drawing.ControlShape")
' Définir la taille et position AVANT de l’ajouter à la page
Dim oSize As New com.sun.star.awt.Size
oSize.Width = 3000 ' En 1/100 mm => 3000 = 3 cm
oSize.Height = 1500 ' 1.5 cm
oControlShape.Size = oSize
Dim oPosition As New com.sun.star.awt.Point
oPosition.X = 5000 ' 5 cm depuis la gauche
oPosition.Y = 4000 ' 4 cm depuis le haut
oControlShape.Position = oPosition
oControlShape.Control = oBouton
' Ajouter le bouton à la feuille
oDrawPage.add(oControlShape)
End Sub