

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
9 messages in org.openoffice.fr.progRe: [prog] Actualisation de diagrammes| From | Sent On | Attachments |
|---|---|---|
| André Baudoin | Jun 23, 2006 12:30 am | |
| Sebastien Remy | Jun 23, 2006 12:39 am | |
| Gérard Lanoye | Jun 23, 2006 12:44 am | |
| André Baudoin | Jun 23, 2006 1:06 am | |
| André Baudoin | Jun 23, 2006 2:10 am | |
| Sebastien Remy | Jul 7, 2006 2:03 am | |
| Francois Gatto | Jul 7, 2006 11:42 am | |
| Sebastien Remy | Jul 10, 2006 2:06 am | |
| Bernard Marcelly | Jul 10, 2006 9:16 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] Actualisation de diagrammes | Actions... |
|---|---|---|
| From: | Sebastien Remy (re...@h3c-energies.fr) | |
| Date: | Jul 10, 2006 2:06:12 am | |
| List: | org.openoffice.fr.prog | |
Francois Gatto a écrit :
Sebastien Remy wrote:
Bonjour à tous, j'écris pour savoir si quelqu'un a la réponse a un problème assez étrange... J'ai une macro qui colle des données (plusieurs séries) dans un fichier calc
D'où proviennent les données ?
et qui sauvegarde au format pdf.
Bon, je crois suivre jusque là.
Lorsque je lance cette
macro d'une traite,
Oui.
je n'ai que la première série de données dans les
diagrammes,
Etrange !
mais si je pose un point d'arrêt, même en l'exécutant très
rapidement, toutes les séries apparaissent. J'ai écrit un wait juste avant de sauvegarder en pdf, mais cela ne semble pas suffisant. Ma question est donc la suivante : est-ce que ca ne fonctionne pas quand je lance la macro d'une traite parce que les diagrammes n'ont pas assimilé la première série de données et que la seconde arrive, ou est-ce, solution de facilité, un bug ?
Bug ? Je ne sais pas, je n'ai pas cherché.
Mais il m'est arrivé de devoir traité une table de 16000 lignes environs. ET l'export PDF n'a pas présenté de problème (quelques dizaines de secondes). Par contre la génération du chart était ... absolument épuisante ... par pour moi, malgré une certaine impatience, mais pour mon pôvre processeur !
Tu peux imaginer le temps ... inteeermiiiiidaaaaableeeeeeeeeee. Mais le résultat a fini par arriver (ouf!)
Ma conclusion, de mémoire, est que c'est bien le chart qui est grand consommateur de ressources et que La Fontaine semble avoir, à propos de la patience, toujours raison.
J'espère que j'ai été clair...
Je crois.
La macro est assez longue, donc je ne
l'ai pas jointe (je ne pense pas que ce soit indispensable).
Indispensable, certes non ! Mais interessante, certes oui ;) Car, il y a plus d'une voies pour réaliser un traitement, et en la matière l'API d'OOo permet des traitements non similaires, bien qu'isofonctionnels, en terme de consommation CPU et temps.
J'espère que quelqu'un pourra m'aider !!!
Toujours est-il que cela avait fonctionné. 16000 lignes, un datapilot, un chart sur une plage de 2000 lignes (à quelques choses près).
Merci d'avance REMY Sébastien
Une idée plus précise de ton/tes traitement(s) ne serait pas inutile. Encore que ... pas forcément significative selon (peut-être) la config du poste.
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. C'est grave docteur ? Je joint la macro cette fois ci. Le problème se situe dans la troisième macro, appelée par la première. Merci d'avance, et merci à François Gatto pour sa précédente réponse REMY Sébastien
option explicit
private entree as object, sortie as object, sortiehebd as object
sub trimsiege (debuttrim as double, fintrim as double)
dim propf(0) as New com.sun.star.beans.PropertyValue dim f0Entree as object, f1Entree as object, f1Sortie as object, f3SortieHebd as object dim nom as string dim adresse as string dim codepost as string dim ville as string dim cellule as object dim Curs1 as object dim UneCellule1 as object dim n as double dim consofioul as double, coutfioul as double, consopropane as double, coutpropane as double dim consogaz as double, coutgaz as double, consourbain as double, couturbain as double dim consoelec as double, coutelec as double, consoeau as double, couteau as double dim ratioelec as double, ratiochauf as double, ratioeau as double, increment as double dim i as double dim LigneCellule as double dim Curs2 as object dim UneCellule2 as object dim n2 as double dim j as double dim combust as string dim k as double, l as double dim MaZone as object dim DescrTri as variant dim ConfigTri(0) as New com.sun.star.table.TableSortField dim styleFam as object dim stylePageStd as object dim MaZone1 as object, MaZone2 as object, MaZone3 as object, maZone4 as object, maZone5 as object dim AdrZone(4) as New com.sun.star.table.CellRangeAddress dim adress as string
propf(0).Name = "FilterName" propf(0).Value = "calc_pdf_Export"
f0Entree = entree.sheets(0) f1Entree = entree.sheets(1) f1Sortie = sortie.sheets(1) f3SortieHebd = SortieHebd.sheets(3)
nom = f0Entree.GetCellByPosition(2,13).String adresse = f0Entree.GetCellByPosition(3,13).String codepost = f0Entree.GetCellByPosition(4,13).String ville = f0Entree.GetCellByPosition(5,13).String
cellule = f3SortieHebd.GetCellByPosition(0,1)
Curs1 = f1Sortie.CreateCursor Curs1.GoToEndOfUsedArea(false) UneCellule1 = Curs1.GetCellByPosition(0,0) n = UneCellule1.CellAddress.row
consofioul = 0 coutfioul = 0 consopropane = 0 coutpropane = 0 consogaz = 0 coutgaz = 0 consourbain = 0 couturbain = 0 consoelec = 0 coutelec = 0 consoeau = 0 couteau = 0 ratioelec = 0 ratiochauf = 0 ratioeau = 0 increment = 0
for i = 1 to n-2 wait 1000 if f1Sortie.GetCellByPosition(3,i+2).Value = fintrim then LigneCellule = cellule.CellAddress.row f3SortieHebd.GetCellByPosition(0,LigneCellule).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(1,LigneCellule).String = f1Sortie.GetCellByPosition(1,i+2).String f3SortieHebd.GetCellByPosition(2,LigneCellule).Value = f1Sortie.GetCellByPosition(9,i+2).Value f3SortieHebd.GetCellByPosition(3,LigneCellule).Value = f1Sortie.GetCellByPosition(13,i+2).Value f3SortieHebd.GetCellByPosition(4,LigneCellule).Value = f1Sortie.GetCellByPosition(19,i+2).Value
Curs2 = f1Entree.CreateCursor Curs2.GoToEndOfUsedArea(false) UneCellule2 = Curs2.GetCellByPosition(0,0) n2 = UneCellule2.CellAddress.row
for j = 1 to n2 if f1Entree.GetCellByPosition(0,j).Value = f1Sortie.GetCellByPosition(0,i+2).Value then combust = f1Entree.GetCellByPosition(8,j).String exit for end if next
if combust = "fioul" then consofioul = consofioul + f1Sortie.GetCellByPosition(18,i+2).Value coutfioul = coutfioul + f1Sortie.GetCellByPosition(19,i+2).Value elseif combust = "propane GPL" then consopropane = consopropane + f1Sortie.GetCellByPosition(18,i+2).Value coutpropane = coutpropane + f1Sortie.GetCellByPosition(19,i+2).Value elseif combust = "gaz naturel" then consogaz = consogaz + f1Sortie.GetCellByPosition(18,i+2).Value coutgaz = coutgaz + f1Sortie.GetCellByPosition(19,i+2).Value elseif combust = "chauffage urbain" then consourbain = consourbain + f1Sortie.GetCellByPosition(18,i+2).Value couturbain = couturbain + f1Sortie.GetCellByPosition(19,i+2).Value end if
consoelec = consoelec + f1Sortie.GetCellByPosition(8,i+2).Value coutelec = coutelec + f1Sortie.GetCellByPosition(9,i+2).Value consoeau = consoeau + f1Sortie.GetCellByPosition(12,i+2).Value couteau = couteau + f1Sortie.GetCellByPosition(13,i+2).Value
if f3SortieHebd.GetCellByPosition(18,108).Value <> 0 then f3SortieHebd.rows.InsertByIndex(108,1) end if
f3SortieHebd.GetCellByPosition(18,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(21,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(24,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(27,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(30,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(33,108).Value = f1Sortie.GetCellByPosition(0,i+2).Value f3SortieHebd.GetCellByPosition(19,108).Value = f1Sortie.GetCellByPosition(9,i+2).Value f3SortieHebd.GetCellByPosition(22,108).Value = f1Sortie.GetCellByPosition(6,i+2).Value f3SortieHebd.GetCellByPosition(25,108).Value = f1Sortie.GetCellByPosition(19,i+2).Value f3SortieHebd.GetCellByPosition(28,108).Value = f1Sortie.GetCellByPosition(16,i+2).Value f3SortieHebd.GetCellByPosition(31,108).Value = f1Sortie.GetCellByPosition(13,i+2).Value f3SortieHebd.GetCellByPosition(34,108).Value = f1Sortie.GetCellByPosition(11,i+2).Value
ratioelec = ratioelec + f1Sortie.GetCellByPosition(6,i+2).Value ratiochauf = ratiochauf + f1Sortie.GetCellByPosition(16,i+2).Value ratioeau = ratioeau + f1Sortie.GetCellByPosition(11,i+2).Value increment = increment + 1 end if
cellule = f3SortieHebd.GetCellByPosition(0,LigneCellule+1) next
f3SortieHebd.GetCellByPosition(7,55).String = CDateFromIso(debuttrim) &" au "& CDateFromIso(fintrim) f3SortieHebd.GetCellByPosition(5,58).String = nom f3SortieHebd.GetCellByPosition(5,59).String = adresse f3SortieHebd.GetCellByPosition(5,60).String = codepost &" " &ville
f3SortieHebd.GetCellByPosition(6,64).Value = consourbain f3SortieHebd.GetCellByPosition(6,65).Value = couturbain f3SortieHebd.GetCellByPosition(7,64).Value = consogaz f3SortieHebd.GetCellByPosition(7,65).Value = coutgaz f3SortieHebd.GetCellByPosition(8,64).Value = consoelec f3SortieHebd.GetCellByPosition(8,65).Value = coutelec f3SortieHebd.GetCellByPosition(9,64).Value = consopropane f3SortieHebd.GetCellByPosition(9,65).Value = coutpropane f3SortieHebd.GetCellByPosition(10,64).Value = consofioul f3SortieHebd.GetCellByPosition(10,65).Value = coutfioul f3SortieHebd.GetCellByPosition(7,68).Value = consoeau f3SortieHebd.GetCellByPosition(7,69).Value = couteau
f3SortieHebd.GetCellByPosition(12,64).Value = couturbain f3SortieHebd.GetCellByPosition(13,64).Value = coutgaz f3SortieHebd.GetCellByPosition(14,64).Value = coutelec f3SortieHebd.GetCellByPosition(15,64).Value = coutpropane f3SortieHebd.GetCellByPosition(16,64).Value = coutfioul f3SortieHebd.GetCellByPosition(17,64).Value = couteau
if increment = 0 then MsgBox("Aucun ratio trimestriel n'a été calculé") exit sub end if
for k = 1 to increment f3SortieHebd.GetCellByPosition(20,107+k).Value = coutelec/increment f3SortieHebd.GetCellByPosition(23,107+k).Value = ratioelec/increment f3SortieHebd.GetCellByPosition(26,107+k).Value = (couturbain+coutgaz+coutfioul+coutpropane)/increment f3SortieHebd.GetCellByPosition(29,107+k).Value = ratiochauf/increment f3SortieHebd.GetCellByPosition(32,107+k).Value = couteau/increment f3SortieHebd.GetCellByPosition(35,107+k).Value = ratioeau/increment next
for l = 1 to 6 MaZone = f3SortieHebd.getCellRangeByPosition(18+(l-1)*3, 108, 20+(l-1)*3, 108+increment) with ConfigTri(0) .Field=1 .IsAscending = true end with DescrTri = MaZone.CreateSortDescriptor SetPropval(DescrTri, "SortFields", ConfigTri()) SetPropval(DescrTri, "IsSortColumns", false) SetPropval(DescrTri, "IsSortIntable", true) MaZone.sort(DescrTri()) next
wait 1000
styleFam = sortiehebd.StyleFamilies stylePageStd = styleFam.getByIndex(1).getByIndex(0) With stylePageStd .HeaderIsOn = False .FooterIsOn = False End With
maZone1 = f3SortieHebd.getCellRangeByName("A1:E55") maZone2 = f3SortieHebd.getCellRangeByName("F56:K107") maZone3 = f3SortieHebd.getCellRangeByName("S56:W107") maZone4 = f3SortieHebd.getCellRangeByName("X56:AB107") maZone5 = f3SortieHebd.getCellRangeByName("AC56:AG107") AdrZone(0) = maZone1.RangeAddress AdrZone(1) = maZone2.RangeAddress AdrZone(2) = maZone3.RangeAddress AdrZone(3) = maZone4.RangeAddress AdrZone(4) = maZone5.RangeAddress f3SortieHebd.PrintAreas = adrZone() adress = ConvertToURL("/home/sebastien/helios/home/SIME/SIME/Sorties trimestrielles siege/" _ &debuttrim &" au "& fintrim &".pdf") sortiehebd.StoreToURL(adress, propf())
f3SortieHebd.PrintAreas = Array()
end sub
sub SetPropval(descr as variant, NomProp as string, ValProp as variant) const titre = "Tableau de propriétés" dim x as long for x=0 to UBound(descr) if descr(x).Name = NomProp then descr(x).Value = ValProp end if next
end sub







