[Résolu][Calc] Graphique qui suit le défilement

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] Graphique qui suit le défilement

Messagepar hieros74 » 03 Oct 2010 20:27

Bonjour à tous,
Je trace des graphiques sur de longues séries de données, les graphiques me permettent de repérer des données abérrentes.
J'aimerai que mon graphique suive mon scroll dans la série, que cela soit à l'aide du scroll souris (ou à défaut par la position de la cellule active).
Quelqu'un a t'il déjà eut ce genre de besoin ?
(Je poste dans la rubrique macro car je me dit que cela tourne autour de l'ancrage du graphique dans la page)
Merci d'avance

Edit : Re moi

Bon je progresse, un peu, je part sur la piste d'un graphique sui suivrai le déplacement de la cellule active
donc je cherche dans un premier temps a savoir ou elle se trouve, pour le moment j'arrive à ça :

Code : Tout sélectionner   AgrandirRéduire
Sub LigneCelluleActive
   Dim CelluleActive As Object
   Dim Doc As Object
   Dim Sheet As Object
   Dim Cell As Object    
   Dim toto as Integer

   Doc = StarDesktop.CurrentComponent
   Sheet = Doc.Sheets(0)
   CelluleActive = ThisComponent.getCurrentSelection
   toto=CelluleActive.CellAddress.Row
   Cell = Sheet.getCellByPosition(0, 0)
   Cell.Value =toto
End Sub


Bon rien de terrible, a chaque appel, je récupère le numero de ligne de la cellule active que j'écrit dans la cellule "A1" enfin (0,0)
C'est un début :D
Dernière édition par hieros74 le 05 Oct 2010 09:01, édité 5 fois.
LibreOffice 3.3.2
CrunchBang Linux 64 bits
hieros74
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 16
Inscrit le : 22 Août 2010 20:22

Re: [Calc] Graphique qui suit le scroll

Messagepar Dude » 04 Oct 2010 09:28

Salut,

Merci de franciser ton titre et modifier "scroll" pour défilement.

Comme d'habitude :
Encore mieux, vous augmenterez vos chances de réponse en joignant en plus un fichier contenant votre macro.

Cela nous évitera d'avoir à recréer quelque chose qui au final, pourrait ne pas convenir.

sur le fond, pourquoi ne pas figer tout simplement une partie de ta feuille (menu Fenêtre > Fixer) ?
AOO 4.1.6 sous Windows 7 Pro x64

Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20661
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Graphique qui suit le défilement

Messagepar hieros74 » 04 Oct 2010 15:58

Merci pour la réponse,
J'avais bien penser à la solution du fenetre -> fixer mais cela ne me plait pas trop,
Je prefererai de loin que cela soit le graphique qui suive (à terme en fait je souhaite 3 graphes)
J'ai vu pun post quasi similaire mais sans réponses réelles pour mon affaire : http://user.services.openoffice.org/fr/forum/viewtopic.php?f=4&t=20576&start=0
J'ai également lu des choses sur les gestions d'événements : Event
reste à trouver sur quel objet interagir, une plage de données peut être ?

Désolé je débute avec Ooo macro, pas de contenu réel à proposer, rien de plus que le petit bout de code ci-dessus :(
LibreOffice 3.3.2
CrunchBang Linux 64 bits
hieros74
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 16
Inscrit le : 22 Août 2010 20:22

Re: [Calc] Graphique qui suit le défilement

Messagepar Pierre-Yves Samyn » 04 Oct 2010 19:14

Bonjour

hieros74 a écrit:J'aimerai que mon graphique suive mon scroll dans la série, que cela soit à l'aide du scroll souris (ou à défaut par la position de la cellule active).
Quelqu'un a t'il déjà eut ce genre de besoin ?


Menu Fenêtre > Nouvelle fenêtre s'impose tellement à mon esprit que je n'envisagerais pas de me lancer dans de la programmation pour cela :)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: [Calc] Graphique qui suit le défilement

Messagepar hieros74 » 04 Oct 2010 19:58

Merci
Bien, celle-ci je n'y avais pas pensé mais disons que même si effectivement c'est une solution, je souhaite vraiment faire cela par de la programmation, ceci dit jolie solution :D
LibreOffice 3.3.2
CrunchBang Linux 64 bits
hieros74
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 16
Inscrit le : 22 Août 2010 20:22

Re: [Calc] Graphique qui suit le défilement

Messagepar spYre » 04 Oct 2010 23:28

Bonjour hieros74,

Un peu désoeuvré ce soir, je me suis penché sur ton problème. Je te propose une solution qui passe par un "listener" : ce n'est sans doute pas la méthode la plus simple pour débuter avec les macros dans OpenOffice, mais ça me paraît répondre à la question.
Vu l'heure tardive, je n'ai ni peaufiné ni commenté le code... ni pu mettre la main sur la page du wiki traitant des listeners. Ce sera fait demain au besoin.
Deux mots rapides quand même : dans le document joint, une macro associée à l'ouverture du document lance un "listener" qui surveille la propriété VisibleArea du contrôleur de document (currentController) et modifie la position du graphique en conséquence.

Cordialement,
Pièces jointes
test hieros74.ods
(16.41 Kio) Téléchargé 149 fois
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 888
Inscrit le : 29 Oct 2008 20:02
Localisation : Liège, Belgique

Re: [Calc] Graphique qui suit le défilement

Messagepar hieros74 » 05 Oct 2010 08:26

:bravo: Ah que c'est beau
Comme tu le dit, ce n'est peut être pas simple pour démarrer mais c'est pil poil le comportement recherché.

Avant de mettre un beau résolu, il faut peut être attendre que l'on trouve un peu de doc sur ce code pour compléter le fil.

Merci :super:
LibreOffice 3.3.2
CrunchBang Linux 64 bits
hieros74
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 16
Inscrit le : 22 Août 2010 20:22

Re: [Calc] Graphique qui suit le défilement

Messagepar spYre » 05 Oct 2010 08:47

Voici la page du wiki : Création de Listeners et de Handlers (la lecture de toute la page peut d'ailleurs être utile).

Plus de détails sur le code :
- la routine addListener, assignée à l'ouverture du document, enregistre un listener du type XPropertyChangeListener pour surveiller la propriété "VisibleArea" du "contrôleur" de document :
Code : Tout sélectionner   AgrandirRéduire
   oDoc = thiscomponent
   oCtrl = oDoc.getCurrentController()
   oListener = createUnoListener("Visible_", "com.sun.star.beans.XPropertyChangeListener")
   ' la méthode doit préciser la propriété à surveiller
   oCtrl.addPropertyChangeListener("VisibleArea", oListener)

- la routine removeListener, assignée à la fermeture du document, désactive le listener (le listener doit être désactivé avant de modifier le code) :
Code : Tout sélectionner   AgrandirRéduire
   oCtrl.removePropertyChangeListener("VisibleArea", oListener)

- les routines Visible_propertyChange et Visible_disposing sont les deux méthodes du listener en question. Visible_propertyChange est appelée dès que le listener est notifié d'un changement :
Code : Tout sélectionner   AgrandirRéduire
sub Visible_propertyChange(ev)
   feuille = oCtrl.getActiveSheet()
    'n'agir que si la feuille active est celle du graphique
   if feuille.name = feuille_graphique then
      deplacerGraphique(feuille, nom_graphique)
   end if
end sub

sub Visible_disposing
end sub

- la routine deplacerGraphique transmet au graphique la nouvelle position Y de la propriété "VisibleAera". Le graphique est identifié par son nom, défini par clic-droit sur l'objet -> Nom... (voir également le navigateur de document F5) :
Code : Tout sélectionner   AgrandirRéduire
sub deplacerGraphique(feuille, nom)
   graph = trouveGraphique(feuille, nom)
   if not isNull(graph) then
      position = graph.getPosition()
      position.Y = oCtrl.visibleArea.Y + pad_from_top
      graph.setPosition(position)
   end if
end sub

function trouveGraphique(feuille, nom) as oject
   dp =  feuille.getDrawPage()
   for i = 0 to dp.count-1
      if dp(i).name = nom then
         trouveGraphique = dp(i)
         exit function
      end if
   next i
   trouveGraphique = nothing
end function

Pour aller plus loin, voir les incontournables outil d'introspection Xray et Livre Programmation OpenOffice.org.

Cordialement.
Dernière édition par spYre le 05 Oct 2010 09:17, édité 1 fois.
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 888
Inscrit le : 29 Oct 2008 20:02
Localisation : Liège, Belgique

Re: [Calc] Graphique qui suit le défilement

Messagepar hieros74 » 05 Oct 2010 09:00

:super: Merci pour tout et pour tous
Ce coup ci je pense que c'est vraiment résolu
tu doit être bon pour le suprême de code non ?
:D :super:
LibreOffice 3.3.2
CrunchBang Linux 64 bits
hieros74
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 16
Inscrit le : 22 Août 2010 20:22

Re: [Résolu][Calc] Graphique qui suit le défilement

Messagepar Sébastien C » 05 Oct 2010 12:04

hieros74 a écrit:tu dois être bon pour le suprême de code non ?

Je plussois ; c'est, je crois, du jamais vu sur ce forum et cela devrait être mis en valeur car utilisable dans d'autres contextes notamment un contrôle de formulaire (qui est un objet graphique nommé...) comme un bouton ou une liste déroulante.
Trois GRANDS bravo :bravo: :bravo: :bravo:
LibreOffice 3.5.3.2 sous GNU-Linux Mageia 2.
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 157
Inscrit le : 29 Avr 2008 00:21
Localisation : Meymac (19250)

Re: [Résolu][Calc] Graphique qui suit le défilement

Messagepar Churay » 05 Oct 2010 13:22

+1

:super:
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2668
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA


Retour vers Macros et API

Qui est en ligne ?

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