Bonsoir,
Serge DAUPHINOT a écrit :
Rebonjour,
Toutes mes excuses je ne pensais pas que dans ce cas l'environnement
d'exécution avait une importance.
Tu n'as pas à t'excuser.
Chaque environnement est spécifique, cependant nul ne peut en mesurer
l'absolue portée.
Je suis sous Windows XP Pro SP2 et OOo 2.3.0.
Bon c'est pas trop grave ;-)
J'espère que l'on s'est bien compris quant au problème de dynamique.
Je crois que oui.
Ca marche à chaque fois que je relance la macro mais pour que l'affichage soit
mis à jour, je dois soit éditer l'objet, soit enregistrer le fichier, le
fermer et le rouvrir. Si la valeur de la cellule d'origine est modifiée il
faut que je relance la macro afin que la cellule "liée" soit de nouveau mise
à jour, d'ailleurs je n'imagine pas comment il pourrait en être autrement ou
alors en affectant la macro à un évènement mais je n'en ai pas trouver un
qui semble convenir.
Ca me semble donc être un problème de rafraichissement.
C'est à ce niveau que je ne comprends pas ce que tu
veux dire lorsque tu écrits que sous Linux tu n'as pas ce souci.
Cela signifie que hormis quelques petits défauts d'affichage (parfois,
mais c'est récurrent dans OOo selon les configs) la mise à jour des
données est dynamique.
Et finalement un forçage de l'actualisation des données m'apparait
bénéfique.
Sans macro, il ne semble pas y avoir de solution même en adoptant une
syntaxe équivalente à celle permettant de le faire entre 2 tableaux ni même
en utilisant la même syntaxe que celle faisant référence à une cellule
présente dans un autre fichier calc depuis une feuille de calcul normale.
Je partage cette vision.
Toutefois, à un problème il y a souvent plus d'une solution et en
l'espèce ton cahier des charges devrait permettre d'opter pour celle qui
présentera le meilleur compromis entre ergonomie/fonctionnalité/compétence.
En l'absence d'une définition plus précise des besoins (sans doute pas
le lieu pour cela) les propositions qui pourront t'être faites ne le
seront qu'à titre d'idée ou de principe.
Merci pour ton aide.
Serge.
Voici alors une solution de mise à jour (actualisation) des données "in
live" :
sub RecopieC1Objet1DsA1Objet2
dim oDoc as object
dim oFirstOLE as object
dim oFirstSheet as object
dim oFirstCell as object
dim oSecondOLE as object
dim oSecondSheet as object
dim oSecondCell as object
dim oResultCell as object
dim oFrame as object
dim aDsp
dim aProps()
oDoc = thisComponent
' frame concernée par l'actualisation
oFrame = oDoc.CurrentController.Frame
' accès premier objet
oFirstOLE = oDoc.EmbeddedObjects.getByName( "Objet1" )
oFirstSheet = oFirstOLE.Model.Sheets.getByName( "Feuille1" )
oFirstCell = oFirstSheet.getCellRangeByName( "E6" )
' accès second objet
oSecondOLE = oDoc.EmbeddedObjects.getByName( "Objet2" )
oSecondSheet = oSecondOLE.Model.Sheets.getByName( "Feuille1" )
oSecondCell = oSecondSheet.getCellRangeByName( "E7" )
' exemple : affecte le contenu d'une cellule de Objet1
' dans une cellule de Objet2
oSecondCell.value = oFirstCell.value
' Mise à jour (actualisation)
aDsp = createUnoService( "com.sun.star.frame.DispatchHelper" )
aDsp.executeDispatch( oFrame, ".uno:UpdateAll", "", 0, aProps() )
end sub
Francois Gatto
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]