[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 !
hieros74
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 22 août 2010 21:22

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

Message par hieros74 »

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

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 modification par hieros74 le 05 oct. 2010 10:01, modifié 5 fois.
LibreOffice 3.3.2
CrunchBang Linux 64 bits
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Graphique qui suit le scroll

Message par Dude »

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) ?
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
hieros74
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 22 août 2010 21:22

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

Message par hieros74 »

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/ ... 76&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
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 10:42

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

Message par Pierre-Yves Samyn »

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 :)
hieros74
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 22 août 2010 21:22

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

Message par hieros74 »

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
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
Messages : 888
Inscription : 29 oct. 2008 20:02
Localisation : Liège, Belgique

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

Message par spYre »

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é 229 fois
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
hieros74
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 22 août 2010 21:22

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

Message par hieros74 »

: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
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
Messages : 888
Inscription : 29 oct. 2008 20:02
Localisation : Liège, Belgique

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

Message par spYre »

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

	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

	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

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

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 modification par spYre le 05 oct. 2010 10:17, modifié 1 fois.
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
hieros74
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 22 août 2010 21:22

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

Message par hieros74 »

: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
Avatar de l’utilisateur
Sébastien C
Membre hOOnoraire
Membre hOOnoraire
Messages : 157
Inscription : 29 avr. 2008 01:21
Localisation : Meymac (19250)
Contact :

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

Message par Sébastien C »

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
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 06:54
Localisation : CATALUNYA
Contact :

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

Message par Churay »

+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...
Verrouillé