

![]() | 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: |
7 messages in org.openoffice.fr.progLenteur sur 3 instructions| From | Sent On | Attachments |
|---|---|---|
| Michel Grentzinger | Jul 8, 2008 8:51 am | |
| Bernard Marcelly | Jul 8, 2008 12:27 pm | |
| Michel Grentzinger | Jul 8, 2008 1:55 pm | |
| yves dutrieux | Jul 8, 2008 2:16 pm | |
| Francois Gatto | Jul 8, 2008 10:40 pm | |
| Michel Grentzinger | Jul 9, 2008 2:46 am | |
| Michel Grentzinger | Jul 9, 2008 6:26 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: | Lenteur sur 3 instructions | Actions... |
|---|---|---|
| From: | Michel Grentzinger (mic....@online.fr) | |
| Date: | Jul 8, 2008 8:51:57 am | |
| List: | org.openoffice.fr.prog | |
Bonjour,
Dans mon classeur qui me sert à gérer un cross, j'ai des soucis de temps d'exécution. Avec une exécution pas à pas, j'ai identifié 3 points de freeze...
il s'agit de : oCellule.Value = dTempsCoureur oCellule.NumberFormat = nFormatId oCelluleHeure.Value = dHeureArrivee
Le code pour formater la cellule peut être enlevé mais ça ne résoud pas mon problème complètement...
Je ne comprend pas cette lenteur car il me semble qu'avec OOo version 2.2 et antérieure, je n'avais pas ce soucis. J'ai testé sous Linux Debian, Ubuntu et Windows avec OOo version 2.4 et le comportement est similaire.
D'où ce problème peut-il venir et est-ce possible de le contourner ?
Ci-dessous, la macro déclenchée par un bouton.
Sub ArriveeCoureur()
Dim oDocument As Object, oControleur As Object, oFeuille As Object Dim oCellule As Object, oCelluleFocus As Object, oCelluleHeure As Object Dim dHeureArrivee As Date, dHeureDepart As Date, dTempsCoureur As Date
oDocument = ThisComponent oControleur = oDocument.CurrentController oFeuille = oControleur.activeSheet
' Enregistrement de l'heure d'arrivée du coureur dHeureArrivee = Time() dHeureDepart = oFeuille.getCellRangeByName("H4").Value dTempsCoureur = dHeureArrivee - dHeureDepart
' Vérification de bon lancement du chronomètre... Coloration de la cellule du chrono ' si l'heure d'arrivée est inférieure à l'heure de départ. If dHeureArrivee < dHeureDepart Then oFeuille.getCellRangeByName("H4").CellBackColor = RGB(255,0,0) End If
' Recherche de la prochaine cellule vide Dim x As Integer, y As Integer x = 2 y = 6
While oFeuille.getCellByPosition(x,y).String <> "" y = y + 1 Wend
' On note le temps du coureur dans la cellule libre oCellule = oFeuille.getCellByPosition(x,y) oCellule.Value = dTempsCoureur
' Cette cellule sera au format MM'SS Dim oLocale As New com.sun.star.lang.Locale Dim nTemps As Integer, nFormatId As Integer
oLocale.Language="fr" oLocale.Country="FR" nFormatId = oDocument.NumberFormats.queryKey("MM'SS''", oLocale, True)
' Si le format MM'SS'' n'existe pas, on l'ajoute à la liste des format ' personalisés If nFormatId = -1 then nFormatId = oDocument.NumberFormats.AddNew("MM'SS''", oLocale) End If
' ATTENTION : prend beaucoup de temps avec OOo > 2.3 ! ' oCellule.NumberFormat = nFormatId
'On note l'heure par sécurité dans une autre colonne oCelluleHeure = oFeuille.getCellByPosition(12,y)
' freeze avec OOo > 2.3
oCelluleHeure.Value = dHeureArrivee
' Formatage identique de cette cellule ' ATTENTION : prend beaucoup de temps avec OOo > 2.3 ! ' oCelluleHeure.NumberFormat = nFormatId
'Ancien code (utilisation des formats standards) '============================================== 'Dim oFormats As Object, nTemps As Integer 'oFormats = ThisComponent.getNumberFormats() 'nTemps = oFormats.getStandardFormat( com.sun.star.util.NumberFormat.TIME, oLocale ) 'oCellule.NumberFormat = nTemps
' On déplace la vue du classeur afin de visualiser la ligne du coureur qui arrive oControleur.FirstVisibleRow = y - 5
' On place le focus sur la cellule du temps oCelluleFocus = oFeuille.GetCellByPosition(0, y + 1) oControleur.Select(oCelluleFocus)
End Sub
-- Michel Grentzinger OpenPGP key ID : B2BAFAFA Available on http://www.keyserver.net







