[Résolu][Calc] Tester changement dans contenu d'un controle

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 !

[Résolu][Calc] Tester changement dans contenu d'un controle

Messagepar Drake » 01 Déc 2019 18:34

Bonjour,

Je voudrai écrire une macro qui testerai si le contenu d'un contrôle numérique a changé afin de déclencher une action.

Je croyais m'en sortir en utilisant l’événement "Texte modifié" du contrôle mais ça ne convient pas car la macro associée à cet événement se déclenche à la 1ere frappe du clavier.

J'ai vu grâce à xray que le contrôle possédait une méthode "textChanged" mais je ne sais pas comment l'utiliser.
On voit aussi "textChanged" dans la rubrique Listener

Merci de bien vouloir me diriger vers une solution.

Test03.ods
(14.54 Kio) Téléchargé 6 fois
Dernière édition par Drake le 03 Déc 2019 00:33, édité 1 fois.
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
Drake
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 271
Inscrit le : 02 Fév 2012 01:51

Re: [Calc]Tester un changement dans le contenu d'un controle

Messagepar Noonours » 01 Déc 2019 18:59

Bonjour,

Je brancherais plutôt les macros aux événements: "Réception du Focus" et "Perte de focus" avec une variable déclarée en "Private":

Code : Tout sélectionner   AgrandirRéduire
Private valChampNum1 As Long

Pour l'événement "réception du focus" on enregistre la valeur du champ numérique avant toute modification éventuelle:
Code : Tout sélectionner   AgrandirRéduire
Sub ReceptionFocus(oEvt)
valChampNum1 = oEvt.Source.value
End Sub

A l'événement "Perte de focus" c'est là que tu testes si il y a eu modification:
Code : Tout sélectionner   AgrandirRéduire
Sub PerteFocus(oEvt)
if oEvt.Source.value <> valChampNum1 then
   Msgbox("Le contenu de ce contrôle a été modifié")
else
   MsgBox("Pas de modif")
endif
End Sub


Que les "ténors" des macros n'hésitent pas à me reprendre si c'est une aberration, avec ma version de Libo, ça a l'air de fonctionner :)
Noonours plantigrade râleur

Pour obtenir la réponse la plus précise possible, N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 6.2.8.2 sous Windows 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 319
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

Re: [Calc]Tester un changement dans le contenu d'un controle

Messagepar Drake » 03 Déc 2019 00:32

Bonsoir Noonours,

Merci pour ton aide et pour la présentation très claire de la démarche.

Ton code fonctionne parfaitement.

Amicalement,
Drake
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
Drake
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 271
Inscrit le : 02 Fév 2012 01:51


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité