[Résolu][Calc]Assigner une macro à un évènement de feuille

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
vito971
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 09 mai 2014 00:53

[Résolu][Calc]Assigner une macro à un évènement de feuille

Message par vito971 »

Bonjour
je crée dans mon programme des feuilles avec une macro avec la commande suivante :

Code : Tout sélectionner

ThisComponent.sheets.insertNewByName(MonButton.string,1)
il sagit donc d'une feuille qui n'existe pas encore à l'ouverture du document
mais cette feuille doit contenir des macros sur les évènements suivants :
Sélection modifié
et
double-clic

j'ai essayé cela :

Code : Tout sélectionner

dim oEvent as new com.sun.star.script.ScriptEventDescriptor
dim struct

	struct = page.getScriptEvents(index)
	if (ubound(struct) > -1) then
		' Supprimer l'assignation au script
	      page.revokeScriptEvents(index)
end if
	
	oEvent.ListenerType = "com.sun.star.awt.XActionListener"
	oEvent.EventMethod = "actionPerformed"
	oEvent.ScriptType = "StarBasic"
	oEvent.ScriptCode = "document:Standard."&NomMacro
	
page.registerScriptEvent(index, oEvent)
mais cela ne fonctionne pas
je me suis inspirer d'un post : affecter une macro à un bouton
voici mon fichier au cas ou cela pourrai intéresse:
Quelqu'un peut-il m'aider svp
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par vito971 le 24 juin 2016 01:20, modifié 2 fois.
ooo4.1 + windows Vista
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc]Assigner une macro à un évènement de feuille par m

Message par Hubert Lambert »

Bonjour,

Tu peux en principe utiliser la méthode "replaceByName" de l'objet "Events" (qui fonctionne comme un conteneur).
Par exemple, si "feuille" est ton objet feuille :

Code : Tout sélectionner

Events = feuille.Events
dim props(1) as new com.sun.star.beans.PropertyValue
    props(0).Name = "EventType"
    props(0).Value = "Script"
    props(1).Name = "Script"
    props(1).Value = "vnd.sun.star.script:Standard.monModule.maMacro?language=Basic&location=document"
Events.replaceByName("OnDoubleClick", props())
Cordialement.

PS. Pense à utiliser Xray pour explorer les objets dans tes macros. Tu verras ainsi quelles propriétés ou méthodes existent pour chaque objet, et tu gagneras un temps précieux :wink: .
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
vito971
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 09 mai 2014 00:53

Re: [Calc]Assigner une macro à un évènement de feuille

Message par vito971 »

Bonsoir
Merci cela fonctionne avec de menus modifications
je sais que l'évènement doubleclick est OnDoubleClick
Mais comment se nomme l'évènement sur la feuille: Sélection modifié
Merci
ooo4.1 + windows Vista
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]Assigner une macro à un évènement de feuille

Message par zeguedon »

Bonjour,

A priori, c'est :"OnChange"
EvenementDeFeuille.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
vito971
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 09 mai 2014 00:53

Re: [Calc]Assigner une macro à un évènement de feuille

Message par vito971 »

bonsoir
apparemment ce n'est pas cela:
sélection modifiée --->OnSelect
Cordialement
Ps:
faire clic droit sur l'onglet de la feuille ->évènement de la feuille
et les évènements en Français sont dans le même ordre que ceux de votre copie d'écran en Anglais
ooo4.1 + windows Vista
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 439
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

Re: [Résolu][Calc]Assigner une macro à un évènement de feuil

Message par ThierryM »

Bonjour,
Je sais que ce fil est ancien mais comme il y a une ambiguïté sur les réponses données, j'apporte une précision, la macro proposée par Hubert Lambert fonctionne parfaitement mais avec l'évènement "OnChange". Donc voici le code modifié :

Code : Tout sélectionner

'Affecte la macro "RetrouverMatiereContenuPrecedent" à l'évènement "Sélection modifiée" de la feuille nouvFeuille
    Events = nouvFeuille.Events
    Dim props(1) as new com.sun.star.beans.PropertyValue
    props(0).Name = "EventType"
    props(0).Value = "Script"
    props(1).Name = "Script"
    props(1).Value = "vnd.sun.star.script:Standard.Matieres.RetrouverMatiereContenuPrecedent?language=Basic&location=document"
    Events.replaceByName("OnChange", props())
Cordialement,
Thierry
LibreOffice Version: 24.8.4.2 / Linux Mint Mate Edition 21.3 / Pourquoi privilégier les formats de fichiers ouverts ?