9 messages in org.openoffice.fr.progRe: [prog] Actualisation de diagrammes
FromSent OnAttachments
André BaudoinJun 23, 2006 12:30 am 
Sebastien RemyJun 23, 2006 12:39 am 
Gérard LanoyeJun 23, 2006 12:44 am 
André BaudoinJun 23, 2006 1:06 am 
André BaudoinJun 23, 2006 2:10 am 
Sebastien RemyJul 7, 2006 2:03 am 
Francois GattoJul 7, 2006 11:42 am 
Sebastien RemyJul 10, 2006 2:06 am 
Bernard MarcellyJul 10, 2006 9:16 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Actualisation de diagrammesActions...
From:Bernard Marcelly (marc@club-internet.fr)
Date:Jul 10, 2006 9:16:48 am
List:org.openoffice.fr.prog

Bonjour Sebastien Remy, Quand on demande à voir le code cela aide mieux s'il est simplifié au maximum pour mettre en évidence le problème. Ce n'est pas le cas de ton codage. J'ai repris le diagramme "Disques Durs" du livre (fichier Code12-08.sxc) et je me suis inspiré de la première macro du fichier:

Sub ModifierDonneesDiagramme Dim monDocument As Object, lesFeuilles As Object Dim maFeuille As Object, maCellule As Object Dim diag1 As Object, diag2 As Object, x As Long monDocument = thisComponent lesFeuilles = monDocument.Sheets maFeuille = lesFeuilles.getByName("DiagLigne")

' rechercher l'objet OLE par son nom diag1 = FindChartByObjName(maFeuille, "CapaDD") if IsNull(diag1) then print "Le diagramme n'existe pas !" else dim propf(0) as New com.sun.star.beans.PropertyValue propf(0).Name = "FilterName" propf(0).Value = "calc_pdf_Export" maCellule = maFeuille.getCellRangeByName("B8") maCellule.Value = 100 ' au lieu de 3200 wait 10 ' si tempo insuffisante, on n'aura pas le diagramme mis à jour monDocument.storeToURL(ConvertToURL("C:\Docs OpenOffice\testApres.pdf"), propf()) end if End Sub

Quand j'exécute la macro je vois à l'écran que le diagramme se met à jour après "un certain temps". Si ma tempo est trop courte, le pdf montre le diagramme _avant_ modif. Si la tempo est suffisante, le pdf montre le diagramme après modif.

Je n'ai pas trouvé d'évènement pour détecter la fin de la mise à jour. Comme la durée dépend entre autres de la vitesse et la charge du processeur, de la mémoire vive disponible, et de la complexité du diagramme, fais plutôt intervenir l'utilisateur. A la place du wait mettre: MsgBox("Cliquer OK quand le diagramme est à jour !")

Bonne journée Bernard

Message du 2006-07-10 11:06:

Ok, je vais essayer d'expliquer plus correctement. J'ai une boucle for qui effectue un copier coller de lignes de données d'un fichier calc vers un autre fichier calc. Ce deuxième fichier contient des diagrammes générés à partir de mes données collées. Ensuite, le fichier est sauvegardé sous forme pdf. Avec un wait après la fin de la boucle et le début d'exportation en pdf, l'actualisation est apparemment aléatoire... Des fois ca marche, des fois non, et quelque soit la durée du wait ! Avec un wait juste après le début de la boucle, ca a l'air de marcher, comme quand je lance le programme étape par étape.