[Résolu][Calc] Changement de macro affectée à un bouton

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 !
agraeth
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 15 avr. 2014 13:57

[Résolu][Calc] Changement de macro affectée à un bouton

Message par agraeth »

Bonjour,

J'ai une feuille calc avec un bouton.
J'ai assigné manuellement à l'évènement Exécuter l'action de ce bouton la macro "macro1" du "Module1".

Est-il possible depuis la macro "macro1" d'assigner à ce même bouton la macro "macro2" du "Module2" en remplacement de la macro "macro1" ?

Merci de votre aide !
Dernière modification par agraeth le 25 juil. 2018 06:26, modifié 1 fois.
LibreOffice 4.3.7.2.lin04 (non modifiable, version officielle employeur - poste fixe) sous Windows 7 Pro
LibreOffice 6.2.7.1.lin1 (non modifiable, version officielle employeur - poste nomade) sous Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Changement de macro affectée à un bouton

Message par Dude »

Mme Irma est à la plage mais je soupçonne un problème XY.
Avec autant de messages à ton compteur, tu sais ce qu'il faut faire pour être aidé.
agraeth
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 15 avr. 2014 13:57

Re: [Calc] Changement de macro affectée à un bouton

Message par agraeth »

Salut Dude,

Pas convaincu d'être concerné par le problème XY, mais j'apporte un fichier avec un bouton, deux modules et deux macros.

Le but recherché :
- on clique
- Macro1 est exécutée et se débranche pour être remplacée par Macro2
- on reclique
- Macro2 est exécutée pour ce clic et tous les clics suivants

Le module1 sera a terme supprimé, c'est pourquoi je dois brancher la macro2 du module2
Sans nom 1.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 4.3.7.2.lin04 (non modifiable, version officielle employeur - poste fixe) sous Windows 7 Pro
LibreOffice 6.2.7.1.lin1 (non modifiable, version officielle employeur - poste nomade) sous Windows 10 Pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Changement de macro affectée à un bouton

Message par Piaf »

Bonjour
A tester

Code : Tout sélectionner

Sub Macro1(oEv)
Dim oFrame as Object, oDispatch as Object, oForm as Object
Dim evt As New com.sun.star.script.ScriptEventDescriptor
	oFrame = ThisComponent.CurrentController.Frame
	oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
	msgbox "Macro1 branchée"
	oEv.Source.Model.Label = "Importer"
	oForm = oEv.source.Model.Parent
	evt.ListenerType = "XActionListener"
	evt.EventMethod = "actionPerformed"
	evt.ScriptType = "Script"
	evt.ScriptCode = "vnd.sun.star.script:Standard.Module2.Macro2?language=Basic&location=document"
	oForm.registerScriptEvent(0, evt)
	thisComponent.setModified(True)
	thisComponent.Store
	oDispatch.executeDispatch(oFrame, ".uno:Reload", "", 0, Array())	
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
agraeth
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 15 avr. 2014 13:57

Re: [Calc] Changement de macro affectée à un bouton

Message par agraeth »

Bonjour Piaf,
Et merci de ta participation !

Une erreur apparait à l'appel de de la macro2 :
erreur.PNG
En consultant l'évènement Exécuter l'action du bouton, la macro assignée est:
vnd.sun.star.script:Standard.Module2.Macro2?language=Basic&location=document
En l'affectant manuellement seul Standard.Module2.Macro2 est écrit...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 4.3.7.2.lin04 (non modifiable, version officielle employeur - poste fixe) sous Windows 7 Pro
LibreOffice 6.2.7.1.lin1 (non modifiable, version officielle employeur - poste nomade) sous Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Changement de macro affectée à un bouton

Message par Dude »

Le plus simple : une 3e macro affectée au bouton

Code : Tout sélectionner

Sub LanceMoi
   if (bTest) then
      Call macro1
   else
      Call macro2
   endif
End sub
bTest est un sémaphore dont la valeur sera changée dans macro1 et qui peut être stockée comme :
  • variable globale
  • cellule dans le document
  • fichier sur le disque
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Changement de macro affectée à un bouton

Message par Piaf »

Re
Avant.png
Après.png
Je ne reproduis pas l'erreur avec ton fichier mis en ligne, ni sous AOO 4.1.5 ni sous LibO 5.4.7.2, donc difficile de te répondre.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
agraeth
Membre OOrganisé
Membre OOrganisé
Messages : 51
Inscription : 15 avr. 2014 13:57

Re: [Calc] Changement de macro affectée à un bouton

Message par agraeth »

Bonjour,
Et merci à Piaf et Dude !

Le problème vient surement de la version suraménagée de l'administration...
Je clos donc le billet, puisque la solution de Piaf semble fonctionner et que l'alternative de Dude est tout à fait opérationnelle.

Encore merci à vous !
LibreOffice 4.3.7.2.lin04 (non modifiable, version officielle employeur - poste fixe) sous Windows 7 Pro
LibreOffice 6.2.7.1.lin1 (non modifiable, version officielle employeur - poste nomade) sous Windows 10 Pro