[Résolu][Calc] incrémentation de 1 sur ecoute de cellule

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 !
Avatar de l’utilisateur
thepapy
Membre lOOyal
Membre lOOyal
Messages : 38
Inscription : 22 nov. 2019 19:43

[Résolu][Calc] incrémentation de 1 sur ecoute de cellule

Message par thepapy »

Cette macro s'active lorsque j'ai bien un changement sur la plage B1:D100
Pourquoi avec ce code, la cellule F18 augmente de 2 ? parfois 4 , parfois 6 ( apparemment sensibilité de la vitesse cpu.. alors que je lui demande une augmentation de 1)

Code : Tout sélectionner

REM  *****  BASIC  *****
Sub Alerte

'Feuille = ThisComponent.Sheets.getByIndex("Service")'Sélectionner la feuille
'ThisComponent.CurrentController.setActiveSheet(Feuille)

with thisComponent.Sheets.getByName("Feuille1")
  maZone=.getCellRangeByName("B1:D100")
  End With

oListener = CreateUnoListener( "Lis_", "com.sun.star.util.XModifyListener" )
maZone.AddModifyListener(oListener)

End Sub


Sub oListenersRemove
' Procédure à appeler pour arrêter le listener
maZone.RemoveModifyListener(oListener)

End Sub

Sub Lis_Disposing
' Procédure nécessaire à l'arrêt du listener même si on n'y fait rien
End Sub


Sub Lis_Modified(oEvent)

Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
dim odoc as object, oFeuil as object
dim CellSource as object
dim cellcible as object


monDocument = ThisComponent

oDoc = ThisComponent
oFeuil = oDoc.sheets(0)

CellSource = oFeuil.GetCellrangeByName("F1")

CellCible = oFeuil.GetCellrangeByName("F18")

valF1 = Cellsource.value

   if (valF1 >= 1) AND (valF1 < 19) then
    CellCible.value = (CellCible.value + 1)
     
   else
    CellCible.value = 0
   endif

End Sub

Dernière modification par micmac le 04 déc. 2019 10:58, modifié 3 fois.
Raison : [Résolu] remplace [Resolu]
open office 4.1.7 , win10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par joel275 »

Bonjour,

quelques remarques:
--> tu devrais utiliser "Option Explicit" dans tes macros pour voir tout de suite si tu ne crées pas par inadvertance une nouvelle variable( faute d'orthographe ou autres)
--> ta variable "oListener" doit être déclarée publique avec le mot clé Global sous peine de ne pas pouvoir retirer le listener en question.

Du coup, je dirais (au pif) que tu as installé 2 listeners branchés sur la même macro.

Je te conseille également de préférer l'évènement de feuille "Contenu modifié" dont la gestion est beaucoup plus facile, quitte à vérifier en début de macro que l'évènement déclencheur provient bien d'une cellule située dans la zone qui t'intéresse.

A plus.
Dernière modification par joel275 le 04 déc. 2019 06:43, modifié 1 fois.
A jour de LibreOffice et de Ubuntu
Avatar de l’utilisateur
thepapy
Membre lOOyal
Membre lOOyal
Messages : 38
Inscription : 22 nov. 2019 19:43

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par thepapy »

Merci joel,

mais l'option
quitte à vérifier en début de macro que l'évènement déclencheur provient bien d'une cellule située dans la zone qui t'intéresse.
à mon avis c'est peut être un début de solution, car malheureusement , la macro 1 ( qui est un clavier empêche donc de détecter l’événement de la feuille qui elle fonctionne que lorsque je ferme la fenêtre du clavier
Donc lancer la macro2 par détection de changement de feuille comme on me la proposé ne fonctionne pas .. :/ ( sauf si la fenêtre de la macro 1 (clavier) est fermée)

Ensuite voilà 1 sem que je me plonge à fond perdu dans le basic pour essayer de comprendre 1/3 de la programmation ^^ dsl , j'ai fait du copier et coller ici et là avec quelques modifications que j'arrive à peine à comprendre ,
bien sur que je comprends les formules etc.. comme je ne suis pas arrivé à un déclenchement par détection événement de la feuille , j'ai essayé un Listener ... :/
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
open office 4.1.7 , win10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par DLE »

Bonsoir,

Je ne reproduis pas le problème, mais je ne sais pas utiliser le document.
Le listener n'est pas actif lors de l'ouverture du classeur, de ce fait la cellule F18 n'est pas incrémentée de 1. Pour activer le listener faire : Menu>Outils>Personnaliser>Événement>Ouvrir un document assigner la macro "Alerte".
joel275 a écrit :Je te conseille également de préférer l'évènement de feuille "Contenu modifié" dont la gestion est beaucoup plus facile
+1

A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
thepapy
Membre lOOyal
Membre lOOyal
Messages : 38
Inscription : 22 nov. 2019 19:43

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par thepapy »

DLE bonsoir et merci

clique sur le clavier pour insérer les numéros, avec le clavier ouvert , je veux que la cellule f18 fonctionne +1 avec les conditions dans la macro : 1_18 ALERTE sans fermer le clavier ( sinon ça ne me sert à rien ;)
Je te conseille également de préférer l'évènement de feuille "Contenu modifié" dont la gestion est beaucoup plus facile
tu vas comprendre que activation de macro si événement de feuille ne fonctionnera pas avec le clavier ouvert..) donc la macro tourne en boucle pour le clavier qui attends un clic

dommage sinon c'était facile ^^ :) d'ou l'idée d'un ListEner ... comme j'ai expliqué plus haut.. Je suis dans la semoule depuis une semaine la dessus ^^ et je fais pleurer l'admin en même temps :aie:
j'ai un peu corrigé ce que tu m'as proposé mais cela ne change pas.. regarde ici le nouveau fichier
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
open office 4.1.7 , win10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par DLE »

Re,
Je ne vois pas la modification que j'ai indiquée précédemment, je te joins mon fichier et regarde menu Outils>Personnaliser>....
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
thepapy
Membre lOOyal
Membre lOOyal
Messages : 38
Inscription : 22 nov. 2019 19:43

Re: [Calc] incrémentation de 1 sur ecoute de cellule

Message par thepapy »

wow un tout grand merci , peux tu m'expliquer les changements? :oops:
juste retirer le Listener et activer la macro à l'ouverture de documents ?
je ne connaissait pas cette option, j'allais cliquer sur la feuille 1 par clic droit :/

le 19-36 , pair impair , je l'ajoute dans la même macro de 1-18 dans le même sub , sub end et le tour est joué?

:)? Par contre , étrangement les cellules série rouge et série noir en formules matricielles, Bug parfois, je dois refaire un ctrl+x , et ctrl+v pour relancer le matricielle dessus ( c'est un détail de bug)
open office 4.1.7 , win10