Bonjour Patrick,

Merci pour cette réponse.
Pour les tableaux, ce n'est pas bon dans mon cas car j'ai parfois des plages
de cellules (celles d'origine) trop importantes en largeur pour que le
dimensionnement d'un tableau soit réalisable sur la simple largeur d'une
page A4. Par contre sous tableur je peux mettre au point facilement quelle
que soit la largeur. Ensuite l'objet OLE dans le texte me permet de "zoomer"
l'ensemble assez facilement. En fait s'il s'agissait de plages fixes
toujours avec la même étendue, le travail en utilisant des tableaux me
semblerait réaliste, sauf que là il s'agit d'un modèle mais qui doit être
personnalisable à chaque cas et les mises à jour avec les tableaux sont trop
pénibles. Ceci dit la technique avec tableaux je la conserve pour d'autres
réalisations car elle est bien moins lourde et donc donne des résultats que
je pense plus stables.

En ce qui concerne les chemins "relatifs", il me semble qu'il y a comme un
bogue puisque, sauf incompréhension de ma part, le paramétrage

outils > options > Chargement/enregistrement > Général > Enregistrement
relatif des URL
donne accès à deux cases à cocher "Système de fichiers" et "Interne" qui ne
semblent pas avoir d'effet en tout cas dans un environnement Windows.

Comme je souhaite avoir deux fichiers, un odt et un ods, placés dans le même
dossier et qui travaillent ensembles, il me fallait trouver une solution
pour contourner le problème. J'utilise ensuite cette paire de fichiers
d'origine qui me sert de modèle et les clones doivent bien entendu être
correctement liés. Je pense solutionner ce dysfonctionnement assez
facilement en écrivant un script Autoit qui me mettra à jour le content.xml
de l'odt en changeant les chemins absolus éronés par les chemins absolus
adéquats.

Maintenant, il me reste le souci de l'actualisation des liens DDE dans mes
objets OLE internes. Et là moi pas savoir. La macro fournie plante avec
comme message d'erreur


Autrement j'ai essayé d'adapter une macro fournie par François GATTO

sub ActualisationOLE
 dim oDoc as object
 dim oFrame as object
 dim aDsp
 dim aProps()

 oDoc = thisComponent
 ' frame concernée par l'actualisation
 oFrame = oDoc.CurrentController.Frame

 ' Mise à jour (actualisation)
 aDsp = createUnoService( "com.sun.star.frame.DispatchHelper" )
 aDsp.executeDispatch( oFrame, ".uno:UpdateAll", "", 0, aProps() )
end sub

mais ça ne fonctionne pas mieux

Donc j'aimerais si possible, bien conscient des passions que déclenchent mon
sujet, qu'on m'aide sur les macros d'actualisation car là je nage la grande
brasse dans le Basic OOo.

J'aurais tout de même découvert pas mal de choses auxquelles je ne pensais
pas à travers les différentes approches pour traiter ce type de problèmes et
je remercie donc tout le monde pour toutes ces réponses éclairantes.

Serge.
Le 9 mai 2008 19:14, Patrick <[EMAIL PROTECTED]> a écrit :

> Bonsoir Serge,
> tu remarques que le sujet ne passionne pas grand monde. A croire que tout
> le mOOonde ne les utilise pas ou procède autrement.
>
> Serge DAUPHINOT a écrit :
>
>> Nouvelle possibilité, faire des objets OLE internes à l'odt, indépendants
>> les uns des autres, et qui récupèrent les données par liens DDE sur le
>> fichier ods externe. J'ai encore un problème avec les chemins absolus.
>> Dans
>> l'expression
>>
>>
> Dans ce cas n'est-il pas plus simple d'utiliser un tableau et d'insérer les
> liens DDE ?
>
>> =DDE("soffice";"G:\dossier1\dossier2\dossier3\Fichier.ods";"Feuille1.A1")
>> le fichier "Fichier.ods" se trouve dans le même dossier qui contient le
>> fichier odt contenant cet objet OLE. Comment peut-on faire pour adresser
>> d'une manière relative et non absolue le fichier ?
>>
>
> Je crois que cela ne fonctionne pas en relatif ! par contre on peut mettre
> des liens Url
>
> =DDE("soffice";""http://www.Web.fr/Fichier.ods";"Feuille1.A1";)
>
> On peut aussi faire un lien Ftp en cliquant sur la cellule OLE dans Writer
> puis = puis on désigne la cellule cible dans le fichier Calc et on valide
> (Enter).
> On obtient :
> ='file:///G:\dossier1\dossier2\dossier3\Fichier.ods'#$Feuille1.A1
>
> Mais c'est un lien Manuel. A voir si la macro suivant affectée à un bouton
> ou autre permet de faire la mise à jour plus facilement
>
> Sub PysMajDDE
> dim i as integer
> for i = 0 to thiscomponent.DDELINKS.count – 1
> thiscomponent.DDELINKS.getByIndex(i).refresh
> next i
> End Sub
>
> Cela te convient ?
>
> Cordialement
> Patrick
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Répondre à