Bonjour,
Je souhaiterai affecter un évènement par macro à un nombre important de contrôles de formulaires. Je ne trouve pas l'emplacement des macros affectées dans l'onglet "évènements" dans Xray pour pouvoir ainsi créer une boucle.
Je trouve étrange aussi le fait de ne pas pouvoir affecter manuellement un évènement à plusieurs contrôles de formulaires...
Quelqu'un peut il m'éclairer ?
Bien à tous
[Résolu][Calc] Affecter un évènement à plusieurs contrôles
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
ericguer1
- NOOuvel adepte

- Messages : 11
- Inscription : 17 oct. 2012 08:59
[Résolu][Calc] Affecter un évènement à plusieurs contrôles
Libre Office v3.6.2.2 sous Windows7
-
joel275
- InconditiOOnnel

- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: [Calc] Affecter un évènement pour plusieurs contrôles
Bonjour,
j'ai retrouvé dans mes archives du code créé par Alain de la Chaume:
Je n'arrive pas à retrouver où il se trouve sur le forum.
J'espère que cela répondra à ta question
j'ai retrouvé dans mes archives du code créé par Alain de la Chaume:
Code : Tout sélectionner
'************************************************************ 19/01/09
'*** Affectation d'une macro à un bouton
'*********************************************************************
sub affectMacroBouton(oForm as object, index as long)
dim oEvent as new com.sun.star.script.ScriptEventDescriptor
dim struct
struct = oForm.getScriptEvents(index)
if (ubound(struct) > -1) then
' Supprimer l'assignation au script
oForm.revokeScriptEvents(index)
end if
oEvent.ListenerType = "com.sun.star.awt.XActionListener"
oEvent.EventMethod = "actionPerformed"
oEvent.ScriptType = "StarBasic"
oEvent.ScriptCode = "document:Standard.aMain.macroPourBouton"
oForm.registerScriptEvent(index, oEvent)
end sub| Ajout : Je l'ai retrouvé dans les suprêmes de code: [Basic] Barre de menus : ajout, suppression http://forum.openoffice.org/fr/forum/vi ... 15&t=17005 |
Dernière modification par joel275 le 01 nov. 2012 08:52, modifié 1 fois.
A jour de LibreOffice et de Ubuntu
-
ericguer1
- NOOuvel adepte

- Messages : 11
- Inscription : 17 oct. 2012 08:59
Re: [Résolu][Calc] Affecter un évènement pour plusieurs
Merci pour cette base qui m'a servi à mettre en place la boucle suivante...je commence un peu à comprendre les macros après 1 semaine de pratique
Encore merci !!
Code : Tout sélectionner
Sub Assigner_macro_controle(oForm as object, index as long)
dim oEvent as new com.sun.star.script.ScriptEventDescriptor
dim struct()
if (ubound(struct) > -1) then
Supprimer l'assignation au script
oForm.revokeScriptEvents(index)
end if
oEvent.ListenerType = "com.sun.star.awt.XActionListener"
oEvent.EventMethod = "actionPerformed"
oEvent.ScriptType = "StarBasic"
oEvent.ScriptCode = "Standard.Module1.Actions_buttonradio_au_click"
oForm.registerScriptEvent(index, oEvent)
end sub
Sub Assigner_macro_plusieurs_controles
dim monCtrl as Object, monDoc as Object, maFeuille as Object, monForm as Object, monDP as Object, i as long, nb_ctrl as long
monDoc = thisComponent
maFeuille = monDoc.sheets.getByName("Ctrl fonctionnement")
monDP = maFeuille.drawpage
monForm = monDP.Forms.getByName("Standard")
nb_ctrl= monForm.count
For i= 0 to nb_ctrl-1
Assigner_macro_controle (monForm,i)
next i
end subLibre Office v3.6.2.2 sous Windows7