Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

classic Classic list List threaded Threaded
7 messages Options
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Bonjour à tous,
Je suis à la recherche d'une macro ou de piste pouvant réaliser les
actions suivantes.
A partir d'un fichier calc existant

  * sélectionner un diagramme
  * copier ce diagramme
  * se positionner dans une case du tableau de Writer déjà existant
  * coller le tableau copié
  * puis l'ancrer comme caractère

je butte principalement sur le fait que l'objet que je sélectionne je ne
trouve pas de méthode pour le copier.
Merci pour votre aide à tous.


--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Laurent Godard-2 Laurent Godard-2
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Bonjour

> je butte principalement sur le fait que l'objet que je sélectionne je ne
> trouve pas de méthode pour le copier.

d'experience le plus direct pour faire un copier coller par macro est
d'abandonner pour une fois l'api et d’utiliser le dispatcher (ie. le
code issu de l'enregistreur de macro)

trouve ton objet, fait un select dessus
puis copie paste par dispatcher
(pour le paste, meme, principe, positionner un viewCursor dans le
tableau, ou un select de ta cellule cible evrait le faire)

bien entendu, toute autre approche est valable ;)

laurent



--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

In reply to this post by linux-2
Merci Laurent

j'ai essayé cette méthode, mais je ne trouve pas la façon de rendre
actif le diagramme que je veux copier
car l'instruction document   = ThisComponent.CurrentController.Frame ne
donne que l'objet actif.

Cordialement
Jean Luc

Le 17/03/2015 09:37, Laurent Godard a écrit :

> Bonjour
>
>> je butte principalement sur le fait que l'objet que je sélectionne je ne
>> trouve pas de méthode pour le copier.
>
> d'experience le plus direct pour faire un copier coller par macro est
> d'abandonner pour une fois l'api et d’utiliser le dispatcher (ie. le
> code issu de l'enregistreur de macro)
>
> trouve ton objet, fait un select dessus
> puis copie paste par dispatcher
> (pour le paste, meme, principe, positionner un viewCursor dans le
> tableau, ou un select de ta cellule cible evrait le faire)
>
> bien entendu, toute autre approche est valable ;)
>
> laurent
>
>


--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Laurent Godard-2 Laurent Godard-2
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Re

> j'ai essayé cette méthode, mais je ne trouve pas la façon de rendre
> actif le diagramme que je veux copier
> car l'instruction document   = ThisComponent.CurrentController.Frame ne
> donne que l'objet actif.

as tu essayé
ThisComponent.currentcontroller.select(monDiagramme)

où monDiagramme est l'objet que tu as recupéré avec l'api

Laurent

--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Merci Laurent,
Mais mes différentes tentatives ont lamentablement échouées
En fin de semaine je vais reprendre ce bout de programme est procéder
plus méthodique pour savoir à quel moment je perds l'objet que je veux
copier.
car quoi que je fasse je copie toujours ce qui est dans le presse papier
et je n'arrive pas à mettre le diagramme dans celui-ci
Cordialement
  Jean Luc
Le 17/03/2015 11:00, Laurent Godard a écrit :

> Re
>
>> j'ai essayé cette méthode, mais je ne trouve pas la façon de rendre
>> actif le diagramme que je veux copier
>> car l'instruction document   = ThisComponent.CurrentController.Frame ne
>> donne que l'objet actif.
>
> as tu essayé
> ThisComponent.currentcontroller.select(monDiagramme)
>
> où monDiagramme est l'objet que tu as recupéré avec l'api
>
> Laurent
>


--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
pierre-yves samyn pierre-yves samyn
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Bonjour

Si tu nommes ton diagramme par clic droit sur le diagramme > Nom, tu peux
y accéder (relativement) simplement de cette façon (le diagramme cherché
a été nommé "test" dans cet exemple) :

sub PysCopierGraphe

dim oClasseur as Object, oFeuille as Object, oShape as object
dim document   as object, dispatcher as object
dim iNbShape as integer

oClasseur = thisComponent
oFeuille = oClasseur.sheets.getByName("Feuille1")

for iNbShape = 0 to oFeuille.DrawPage.count - 1
        oShape = oFeuille.DrawPage.getByIndex(iNbShape)
        if oShape.name = "test" then                
                        thiscomponent.currentcontroller.select(oshape)
                        document   = ThisComponent.CurrentController.Frame
                        dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
                        dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
                exit for
        end if  
next iNbShape
 
end sub

Cordialement
Pierre-Yves
Jean Luc Bélondrade Jean Luc Bélondrade
Reply | Threaded
Open this post in threaded view
|

Re: Macro pour copier un diagramme fait dans Calc dans un tableau de Writer

Merci Pierre-Yves,
Je vais le tester en fin de semaine
Cordialement
Jean Luc

Le 17/03/2015 16:23, pierre-yves samyn a écrit :

> Bonjour
>
> Si tu nommes ton diagramme par clic droit sur le diagramme > Nom, tu peux
> y accéder (relativement) simplement de cette façon (le diagramme cherché
> a été nommé "test" dans cet exemple) :
>
> sub PysCopierGraphe
>
> dim oClasseur as Object, oFeuille as Object, oShape as object
> dim document   as object, dispatcher as object
> dim iNbShape as integer
>
> oClasseur = thisComponent
> oFeuille = oClasseur.sheets.getByName("Feuille1")
>
> for iNbShape = 0 to oFeuille.DrawPage.count - 1
>          oShape = oFeuille.DrawPage.getByIndex(iNbShape)
>          if oShape.name = "test" then
> thiscomponent.currentcontroller.select(oshape)
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
> dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
>                  exit for
>          end if
> next iNbShape
>  
> end sub
>
> Cordialement
> Pierre-Yves
>
>
>
> --
> View this message in context: http://nabble.documentfoundation.org/Macro-pour-copier-un-diagramme-fait-dans-Calc-dans-un-tableau-de-Writer-tp4143484p4143525.html
> Sent from the Users mailing list archive at Nabble.com.
>


--
M. Jean Luc Bélondrade
1 Domaine de la Haute Borne
27700 Hennezis
tél. : 02 32 54 65 90
[hidden email]

Monsieur,


--
Envoyez un mail à [hidden email] pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés