[Résolu][Calc] Copier une zone avec valeur et format

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Copier une zone avec valeur et format

Messagepar CathyContact3 » 22 Oct 2019 14:42


La modération a écrit:Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets).[Calc] et non [CALC]. Nus l'avons fait pour vous.

Bonjour
Je veux copier une zone de cellules dans un autre classeur avec le format et les valeurs des formules (donc sans les formule, juste le résultat) et sans recopier les boutons de controles.
J'arrive a copier tout ( format formules et boutons de controle ) avec copyRange ou uniquement les valeurs avec dataArray mais je perds les formats.
J'ai eu ces fonctions en parcourant le forum et les suprème de code mais je n'ai pas trouver une solution pour avoir les valeurs et les formats sans formule et sans les boutons de controle.
Je ne suis pas expert du codage, donc je cherche dans les exemples mais je ne trouve pas.
Merci si vous pouvez m'aider
Cathy
Dernière édition par CathyContact3 le 28 Oct 2019 09:19, édité 2 fois.
Libre Office 5.1.4.2
Windows 10
CathyContact3
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 26 Juil 2016 10:00

Re: [Calc] Copier une zone avec valeur et format sans formul

Messagepar micmac » 22 Oct 2019 14:47

Bonjour,

Avant de poster une nouvelle question, il nous serait agréable que vous donniez suite au fil précédemment ouvert :
[Calc]Comment tuer un process lancé par shell
notamment en précisant la solution retenue et en ajoutant le balisage [Résolu] Image si c'est le cas.
C'est une question de courtoisie pour les gens qui vous ont répondu et consacré bénévolement de leur temps. Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.

Merci de votre collaboration
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6330
Inscrit le : 28 Août 2010 09:45

Re: [Calc] Copier une zone avec valeur et format sans formul

Messagepar OOotremer971 » 22 Oct 2019 17:41

Bonjour,
CathyContact3 a écrit:Je ne suis pas expert du codage, donc je cherche dans les exemples mais je ne trouve pas.


Tu peux simplement utiliser le dispatcher en enregistrant une macro avec l'enregistreur de macro, d'un copier/collage spécial pour récupérer les bons arguments en cochant et décochant les options du collage spécial qui t’intéressent.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2145
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Copier une zone avec valeur et format sans formul

Messagepar CathyContact3 » 23 Oct 2019 13:17

Je préfère ne pas utiliser le dispacher qui génère un code énorme et pas très lisible. Je préfère écrire le code directement avec jute le code nécessaire et bien commenté pour les modifs ultérieures. Mon code est déjà énorme et j'essaye de faire des fonctions réutilisables et paramétrées. Je ne trouve pas juste une fonction de copie (valeur+format) genre .copyRange ou dataArray, peut être en paramétrant une fonction de copy des arguments ????
Libre Office 5.1.4.2
Windows 10
CathyContact3
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 26 Juil 2016 10:00

Re: [Calc] Copier une zone avec valeur et format sans formul

Messagepar Hubert Lambert » 27 Oct 2019 20:01

Bonjour,
CathyContact3 a écrit:Je préfère ne pas utiliser le dispacher qui génère un code énorme et pas très lisible.

La proposition d'OOotremer971 est pourtant, dans le cas d'espèce, plus simple que l'API qui, sauf erreur, ne propose aucun équivalent :
Code : Tout sélectionner   AgrandirRéduire
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    doc = thiscomponent
    controller = doc.CurrentController
    frame = controller.Frame
    frame.ContainerWindow.setFocus()  ' voir bug 70883 (https://bugs.documentfoundation.org/show_bug.cgi?id=70883)
    source = doc.Sheets.getCellRangeByPosition(0,0,3,3,0)
    controller.select(source)
    dispatcher.executeDispatch(frame, ".uno:Copy", "", 0, array())
    dispatcher.executeDispatch(frame, ".uno:Deselect", "", 0, array())

    docdest = stardesktop.loadComponentFromURL("private:factory/scalc", "_default", 0, array())
    controller2 = docdest.CurrentController
    frame2 = controller2.Frame
    A1 = docdest.Sheets.getCellByPosition(0,0,0)
    controller2.select(A1)
    dim args(0) as new com.sun.star.beans.PropertyValue
    args(0).Name = "Flags"
    args(0).Value = "SVDT"
    dispatcher.executeDispatch(frame2, ".uno:InsertContents", "", 0, args())   
    dispatcher.executeDispatch(frame2, ".uno:Deselect", "", 0, array())

Les codes disponibles pour la propriétés "Flags" sont les suivants :
Code : Tout sélectionner   AgrandirRéduire
'A' InsertDeleteFlags::ALL
'S' : InsertDeleteFlags::STRING
'V' : InsertDeleteFlags::VALUE
'D' : InsertDeleteFlags::DATETIME
'F' : InsertDeleteFlags::FORMULA
'N' : InsertDeleteFlags::NOTE
'T' : InsertDeleteFlags::ATTRIB
'O' : InsertDeleteFlags::OBJECTS
(source)

Cordialement.
Pièces jointes
CathyContact3.ods
(12 Kio) Téléchargé 11 fois
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1139
Inscrit le : 06 Avr 2016 08:26

Re: [Calc] Copier une zone avec valeur et format sans formul

Messagepar CathyContact3 » 28 Oct 2019 09:15

Bonjour. Merci à OOotremer971 et Hubert Lambert.
Cette solution est super car effectivement le code est très petit et très clair. J'avais essayé avec l'enregistreur de macro et faire la copie spéciale mais le code était énorme et plein de code inutile. J'ai essayé de le nettoyer un peu mais ensuite il ne fonctionnait plus... Merci encore d'avoir pris le temps de répondre et de faire un fichier d'exemple en plus. Cela répond exactement à mon problème. :bravo:
Libre Office 5.1.4.2
Windows 10
CathyContact3
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 26 Juil 2016 10:00


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)