Macro : collage spécial

Bonjour,

Dans une macro, je voudrais remplacer le copyrange par un collage spécial. malheureusement, je n'arrive pas à trouver la syntaxe adéquate.

Quelqu'un pourrait-il m'aider?

Merci

Claude

Bonsoir,

Bonjour,

Dans une macro, je voudrais remplacer le copyrange par un collage spécial.
malheureusement, je n'arrive pas à trouver la syntaxe adéquate.

Si tu utilises l'enregistreur de macro, il faut viseblement passer par une
fonction "insertContents" :

rem ----------------------------------------------------------------------
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "SVDNT"
args3(1).Name = "FormulaCommand"
args3(1).Value = 1
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args3())

sais pas si ça peut t'aider :-/

Yves

Bonjour,

Je n'ai jusqu'à présent jamais utilisé l'enregistreur.
Et j'aimerais bien ne pas mélanger les genres.
Cela dit je trouve quand même étrange qu'il n'existe pas de fonction pour le collage spécial.
Merci quand même

Claude
-------- Message original --------
Sujet : Re: [fr-users] Macro : collage spécial
Pour : users@fr.libreoffice.org

Bonjour

Il existe plusieurs manières de procéder, selon ce que tu veux ou non
récupérer.

Le dispatcher est une bonne solution, qu'on peut utiliser sans réserve
notamment pour ce qu'il permet "en plus" : opérations, déplacements, etc.

Par exemple le déplacement "1" permet de déplacer les cellules uniquement
si nécessaire comme illustré dans les copies d'écran jointes.

http://nabble.documentfoundation.org/file/n3992809/Capture-1.png

On copie A1:A4 qu'on colle "spécial" par programme avec le déplacement 1
en A12. Le résultat sera :

http://nabble.documentfoundation.org/file/n3992809/Capture-2.png

On constate que A12:A15 ont été déplacée pour ne pas être écrasées.

Hormis le collage spécial, on peut aussi utiliser l'API. Par exemple
si tu veux ne récupérer que les données tu peux faire :

Sub PysRecupData

dim PysFeuille as object
dim PysSource as object
dim PysDest as object

PysFeuille = thiscomponent.sheets.getByName("Feuille1")
PysSource = PysFeuille.getCellRangeByName("A1:A4")
PysDest = PysFeuille.getCellRangeByName("A10:A13")

PysDest.DataArray = PysSource.DataArray

End Sub

Si tu veux tout récupérer sauf les formats tu peux faire :

Sub PysRecupFormules

dim PysFeuille as object
dim PysSource as object
dim PysDest as object

PysFeuille = thiscomponent.sheets.getByName("Feuille1")
PysSource = PysFeuille.getCellRangeByName("A1:A4")
PysDest = PysFeuille.getCellRangeByName("A10:A13")

PysDest.FormulaArray = PysSource.FormulaArray

End Sub

Le classeur joint reprend ces exemples en détaillant les paramètres
possibles
pour le collage spécial. Il comprend également une procédure permettant
de travailler sur la sélection courante pour supprimer le "=" commençant
les formules dans la sélection. Ceci est une autre solution pour "tout"
garder
sauf la formule...

http://nabble.documentfoundation.org/file/n3992809/collageSpécial.ods
collageSpécial.ods

Cordialement
Pierre-Yves

Bonjour,

Merci pour ton aide, Je me sers très souvent du datarray mais je ne connaissais pas le formularray.

J'avoue avoir toujours quelques réticences à me servir du dispatcher car jusqu'à présent je n'ai trouvé aucune doc listant l'ensemble des fonctions et surtout de leurs paramètres et donc je ne suis jamais sure que les paramètres passés seront toujours corrects dans un environnement autre que celui de test.

Encore merci

Claude

-------- Message original --------
Sujet : [fr-users] Re: Macro : collage spécial
Pour : users@fr.libreoffice.org

Bonjour

claude wrote

J'avoue avoir toujours quelques réticences à me servir du dispatcher car
jusqu'à présent je n'ai trouvé aucune doc listant l'ensemble des
fonctions et surtout de leurs paramètres

Non en effet....

Il y a
http://wiki.services.openoffice.org/wiki/Framework/Article/OpenOffice.org_2.x_Commands
qui "date" un peu...

Sinon on trouve aussi des choses (mais pas les paramètres) en inspectant
le fichier xml correspondant. Par exemple pour Windows7, LibO 3.5 et Calc :

C:\Program Files (x86)\LibreOffice
3.5\share\config\soffice.cfg\modules\scalc\menubar\menubar.xml

Cordialement
Pierre-Yves