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
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