5 messages in org.openoffice.fr.progRe: [prog] Lancement automatique de m...
FromSent OnAttachments
m.gr...@cnafmail.frSep 19, 2007 5:05 am 
Francois GattoSep 19, 2007 9:43 pm 
SEGUIN FrançoisSep 19, 2007 11:33 pm 
m.gr...@cnafmail.frSep 23, 2007 11:18 pm 
m.gr...@cnafmail.frSep 23, 2007 11:21 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Lancement automatique de macroActions...
From:SEGUIN François (fseg@wanadoo.fr)
Date:Sep 19, 2007 11:33:01 pm
List:org.openoffice.fr.prog

Bonjour

Pour réaliser une macro lorsque tu change le contenu d'une cellule il faut mettre en place un LISTENER voici un exemple de code qui change la couleur des cellules en fonction d'une modification de valeur de celle-ci. Je suis parti du code fourni il y a quelques mois lors d'une demande précédente sur le sujet.

François

Option Explicit

Global oListener As Object 'Objet d'acces au LISTENER Global oCell As Object 'Object d'acces au cellule d'une feuille

Rem Exécuter cette macro démarre l'interception d'événement lors du changement de valeur de cellule Sub Example_SelectionChangeListener

Rem * DECLARATION DES VARIABLES dim oDoc as object 'Objet d'acces au document en cours dim oSheet as object 'Objet d'acces au feullies CALC dim sTypeListener 'Objet d'acces au Type DE LISTENER

Rem * AFFECTATION DE LA VARIABLE D'ACCES AU DOCUMENT ODoc = Thiscomponent

Rem * AFFECTATION DE LA VARIABLE D'ACCES A LA FEUILLE DE CALCUL oSheet = oDoc.Sheets.getByName( "Feuille1" )

Rem * AFFECTATION DE LA VARIABLE D'ACCES AUX CELLULES A ECOUTER oCell = oSheet.getCellRangeByName( "A10:A20" )

Rem * MISE EN PLACE LISTENER sTypeListener = "com.sun.star.util.XModifyListener" oListener = CreateUnoListener( "CellEvent_", sTypeListener )

oCell.addModifyListener( oListener )

End Sub

Rem Cet évennement est executé lors de chaque modification de la cellule Sub CellEvent_Modified( oEvent )

Rem * APPEL DU PROGRAMME DE CHANGEMENT DE COULEUR Call Main

End Sub

Rem Désactiver l'écouteur Sub CellEvent_Disposing( oEvent ) msgbox "Fin d'écoute du listener" End Sub

Rem A executer pour supprimer l'écouteur Sub Remove_Listener 'http://api.openoffice.org/docs/common/ref/com/sun/star/util/XModifyBroadcaster.html#removeModifyListener oCell.removeModifyListener( oListener ) End Sub

sub Main rem ---------------------------------------------------------------------- rem define variables dim document as object

rem get access to the document document = ThisComponent.CurrentController.Frame

Dim ValeurCellule as Integer 'Mémorise la valeur de la cellule à colorier Dim MaCellule as Object Dim i as Integer

For i = 1 to 11 MaCellule = ThisComponent.Sheets.getByName("Feuille1").getCellByPosition(0,8+i) ValeurCellule = MaCellule.String Select Case ValeurCellule Case 0 MaCellule.CellBackColor = 16711680 Case 1 MaCellule.CellBackColor = 16724736 Case 2 MaCellule.CellBackColor = 16737792 Case 3 MaCellule.CellBackColor = 16750848 Case 4 MaCellule.CellBackColor = 16763904 Case 5 MaCellule.CellBackColor = 16776960 Case 6 MaCellule.CellBackColor = 13827846 Case 7 MaCellule.CellBackColor = 10878727 Case 8 MaCellule.CellBackColor = 7929608 Case 9 MaCellule.CellBackColor = 4980489 Case 10 MaCellule.CellBackColor = 2031370 Case Else MaCellule.CellBackColor = -1 End Select Next i EndSub

----- Original Message ----- From: <m.gr@cnafmail.fr> To: <pr@fr.openoffice.org> Sent: Wednesday, September 19, 2007 2:06 PM Subject: [prog] Lancement automatique de macro

Bonjour,

J'aurais souhaité connaître la procédure pour lancer une macro lors du changement de sélection d'une cellule. Dans Excel, au niveau d'une feuille, il existe une macro "Worksheet_SelectionChange(ByVal Target As Excel.Range)" qui est appelée au changement de sélection.

Comment faire avec OpenOffice ?

Par ailleurs, j'ai la même question à propos du lancement automatique dès qu'un calcul est effectué. Dans Excel, c'est également au niveau de la feuille avec la macro "Worksheet_Calculate()"

Là encore, comment faire avec OpenOffice ?

D'avance merci.

Michel GRIMAULT