Bernard Marcelly a écrit :
Le 2005-04-06 14:12, Emmanuel S. a écrit :
je cherche à copier une feuille calc d'un document dans un autre document Calc.
Sur le livre, c'est expliqué que pour une copie de feuille à l'intérieur d'un document.
Je n'ai pas trouvé dans l'API des mécanismes pour cela (alors que c'est possible sous Windows avec l'interface utilisateur par Ctrl+ glisser-déposer de l'onglet d'un document à l'autre).
Ah, oui, comme ça aussi. Moi je fais clic-droit sur l'onglet de la feuille que je veux copier, puis Déplacer/Copier la feuille et je sélectionne mon document 2. Je peux même choisir la position où sera copiée la feuille.
Si un copier-coller convient, on peut le programmer mais cela nécessite plusieurs étapes.
- mettre au premier plan le document 1
- sélectionner de manière visible l'ensemble utile de la feuille
- copier vers presse-papier
- créer une nouvelle feuille dans le document 2
- si nécessaire mettre au premier plan le document 2
- sélectionner la cellule du coin haut-gauche du document 2
- coller depuis le presse-papierChaque élément est expliqué dans le livre, sauf la mise en premier-plan d'un document:
leDoc.CurrentController.Frame.ContainerWindow.toFront

Bonne chance,
   Bernard
Merci Bernard,

oui, j'ai essayé comme ça. Mais ça ne copie pas le style de la feuille (donc, en-têtes justement, puis zones d'impression, bordures ...).

Ce que j'ai trouvé comme solution, c'est de faire une copie de mon document 1 avec StoreToURL, j'obtient donc document 2 auquel je suprime tous ce qui ne m'interresse plus feuilles, macros, (boite de dialogue j'y arrive pas), il me reste plus que la ou les feuilles que je voulais copier.
Pour ce que j'ai à faire, ça pourrait aller, mais la méthode est lourde ; mon document 1 contient au moins 15 feuilles et 3 modules basic, et je veux seulement copier 1 à 3 feuilles dans un nouveau document 2.

Puis si l'on a un document 2 qui contient déjà des feuilles et auquel on veut ajouter une autre feuille du document 1, ma solution ne marche pas !!

Sinon, l'enregistrement de macros m'a renvoyé :

Sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "DocName"
args1(0).Value = "Document 2"
args1(1).Name = "Index"
args1(1).Value = 65535
args1(2).Name = "Copy"
args1(2).Value = true

'Xray.Xray dispatcher '.executeDispatch 'ThisComponent.CurrentController.Frame.move 'dispatcher
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args1())
end sub



J'utilise donc : dispatcher.executeDispatch(document, ".uno:Move", "", 0, args1()) dans ma macro pour copier une feuille, mais cela implique que Document 1 soit ouvert sur la feuille qui m'interresse !
Or si j'ouvre ce Document 1 sur cette feuille qui m'interresse avec la propriété Hidden à true, ça ne marche plus !

Bref, galère ...
Puis je n'ai absolument rien trouvé dans l'API sur ce "Move", est-ce normal ?

Merci ...


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à