[Calc]Déclencher un évènement à la modification d'une cellule unique

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 !
bag83440
Fraîchement OOthentifié
Messages : 4
Inscription : 16 juin 2026 12:42

[Calc]Déclencher un évènement à la modification d'une cellule unique

Message par bag83440 »


La modération vous a écrit: Sujet divisé du fil : [Calc]Déclencher un évènement à la modification d'une cellule unique
Cause : règle n° 7

Bonjour, j'ai une approche différente en Libreoffice sur ce besoin en utilisant simplement les Listeners; voir l'example ci-dessous

Code : Tout sélectionner

Sub AgeWeightListener
 agewRange = csheet.getCellrangeByName(AGECRITPOIDS)                                    ' cellule unique 
 aListener = createUnoListener("AgeWeight_","com.sun.star.util.XModifyListener")  'create a listener
 agewRange.addModifyListener(aListener) 							    'register the listener sur la cellule 
End Sub

Sub AgeWeight_modified(oEv)
   Dim src As Object : src = oEv.source   
   data = src.getDataArray()
   .... code...   
End Sub
ça marche bien ... MAIS la sous-routine "AgeWeight_modified" est appelée systématiquement 2 fois de suite (Bug ?)... et je ne connais pas la raison ... En fait j'aimerais n'appeler le code que quand il n'y a plus d'event pending sur la cellule (je voudrais que le code ne soit appelé qu'à travers la routine AgeWeight_disposing qui actuellement n'est jamais déclanchée).

Je me pose la question de savoir si ce listener n'est vraiment appelé que quand la cellule est modifiée, ou simplement si elle est accédée .. j'ai des doutes ...

Le seul by-pass trouvé est de comparer la nouvelle valeur de cellule par rapport à l'ancienne et de n'invoquer le code quand une différence a été détectée...
LibreOffice 26.2.4.2 (x86_64) - Windows 10
Avatar de l’utilisateur
tintin
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10205
Inscription : 18 juil. 2008 15:29
Localisation : F-Oise

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par tintin »

Bonjour et bienvenue,

Votre question différant quelque peu du sujet duquel votre message a été divisé, je vous suggère de revoir son titre afin qu'il soit explicite du problème rencontré.

Par ailleurs, j'attire votre attention sur le fait que la version 26.2.4.2 que vous utilisez est une version ayant le statut d'expérimentale.
Voir : être à jour de la dernière version officielle stable
AOO 4.1.16 et LibO 26.2.5.2 / macOS M4 Silicon 26.6 Tahoe
Adoptium-temurinJDK-1.8.0.492 / Firefox/Safari/Thunderbird /Time Machine + Clone CCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26214
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par Dude »

Salut,

Il n'y a aucun intérêt à coder des listeners puisque les événements de feuille sont justement là pour les gérer.
Comme d'habitude....
Image
Comment joindre un fichier au format ODS
Pense également à dépersonnaliser le fichier joint et à fournir quelque chose d'exhaustif et limité à cette seule problématique.
bag83440
Fraîchement OOthentifié
Messages : 4
Inscription : 16 juin 2026 12:42

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par bag83440 »

Merci pour la réponse sur l'utilisation d'un événement de feuille .. je débute dans l'utilisation de Basic sur LO ... j'ai mis du temps pour mettre la main sur la fameuse fonction magique getCurrentSelection qui permet d'avoir les infos sur la ou les cellules modifiées.

Quand je suis sur le Help LO en Français et que je cherche "évènement" dans la fenêtre de recherche, "évènement de feuille" ne ressort pas .. le seul moyen que j'ai trouvé est de faire une recherche directe dans google ... Dans l'arborescence du help "Macros et Langages de script->LibreOffice Basic->Repères", il y a une entrée "Macros pilotées par les évènements de document", mais rien sur "Evenements de la feuille" .. Ne faudrait-il pas ajouter ce lien dans cet arborescence.

D'autre part, la page "Evènements de la feuille" contient un simple lien annexe sur "Evènement" qui renvoie à cette même page... Ne pourrait-on pas ajouter à cette page "Evènements de la feuille" un simple exemple utilisant la fonction "getCurrentSelection" ?

Merci.
LibreOffice 26.2.4.2 (x86_64) - Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12866
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par Bidouille »

Bonjour,
bag83440 a écrit : 24 juin 2026 07:53 Ne faudrait-il pas ajouter ce lien dans cet arborescence.
Ce forum est uniquement composé d'utilisateurs comme vous et qui aident bénévolement.
Nous ne gérons pas la documentation en dehors de nos tutoriels disponibles ici.
Il vous appartient donc de contribuer si vous constatez des manques ou des erreurs :
https://wiki.documentfoundation.org/Documentation/Development
Sachant que toute contribution doit d'abord être rédigée en anglais avant d'être traduite.
Jeff
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10027
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par Jeff »

Bonjour,

À tout hasard :
viewtopic.php?p=370759#p370759

A +
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.16 / Debian 13 "Trixie" / Xfce
AOO 4.1.15 / Debian 11 "Bullseye" / Cinnamon
bag83440
Fraîchement OOthentifié
Messages : 4
Inscription : 16 juin 2026 12:42

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par bag83440 »

Bidouille a écrit : 24 juin 2026 08:57 Bonjour,
bag83440 a écrit : 24 juin 2026 07:53 Ne faudrait-il pas ajouter ce lien dans cet arborescence.
Ce forum est uniquement composé d'utilisateurs comme vous et qui aident bénévolement.
Nous ne gérons pas la documentation en dehors de nos tutoriels disponibles ici.
Il vous appartient donc de contribuer si vous constatez des manques ou des erreurs :
https://wiki.documentfoundation.org/Documentation/Development
Sachant que toute contribution doit d'abord être rédigée en anglais avant d'être traduite.
Désolé, pour la réponse tardive ... Merci pour l'information ... Je pense effectivement ouvrir une entrée à partir du lien ci-dessous .. Je travaille beaucoup aussi avec la documentation ... Néanmoins les tutoriels me sont aussi très utiles ...
Pour la rédaction en Anglais, pas de problème ...
LibreOffice 26.2.4.2 (x86_64) - Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12866
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc]Déclencher un évènement à la modification d'une cellule unique

Message par Bidouille »

Veillez à ne pas citer l'intégralité du message auquel vous répondez. Surtout si c'est pour répéter vos propres propos. Cela alourdit inutilement la lecture.

Si votre question est résolue, merci de l'indiquer ou comme déjà stipulé plus haut, joignez un document permettant de comprendre la problématique.