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]

Répondre à