[Résolu] [Calc] Copier/coller seulement texte 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 !
BadWoo
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2018 15:07

[Résolu] [Calc] Copier/coller seulement texte et format

Message par BadWoo »

Bonjour,

Je voudrais copier/coller le texte et le format pour supprimer les formules.
J'ai utilisé l'outil : "enregistrer une macro" cependant il ne copie pas bien la sélection. Cela fonctionne seulement si je fais d'abord une copie manuelle puis je lance la macro.
J'ai essayé avec

Code : Tout sélectionner

dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
et

Code : Tout sélectionner

dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
mais cela revient au même.

Avez vous une idée pour résoudre mon problème ?
Ne faut-il pas passer par l'enregistreur ?

Code : Tout sélectionner

REM  *****  BASIC  *****

Sub copier_coller

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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$1:$B$300"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "ST"
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
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())

End Sub
En vous remerciant


BadWoo
Dernière modification par BadWoo le 05 juin 2018 15:02, modifié 1 fois.
Libreoffice v: 5.2.7.2
Linux Debian 9
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier/coller seulement texte et format

Message par Dude »

BadWoo a écrit :Avez vous une idée pour résoudre mon problème ?
Dans l'ordre :
  1. Laisser tomber l'enregistreur
  2. faire un minimum de recherche
  3. Fournir un document

Code : Tout sélectionner

Sub Dude
	sPlage = "B1:B300"
	oDoc = thisComponent()
	oFeuille = oDoc.currentController.ActiveSheet
	oSource = oFeuille.getCellRangeByName(sPlage)
	oDest = oFeuille.getCellRangeByName(sPlage)
	oDest.DataArray = oSource.DataArray
End Sub
BadWoo
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 06 mars 2018 15:07

Re: [Calc] Copier/coller seulement texte et format

Message par BadWoo »

Merci :D j'ai compris grace à toi, ca marche nickel

Code : Tout sélectionner

Dim onClasseur As Object, aFeuille As Object
Dim aSource as Object
Dim aDest  as Object

onClasseur = ThisComponent
aFeuille = onClasseur.Sheets.getByName("xxxx")

   aSource = aFeuille.getCellRangeByName("B1:B300")
   aDest =aFeuille.getCellRangeByName("B1:B300")
   aDest.DataArray = aSource.DataArray
en fait tu lui dit juste de mettre les mêmes données de la source à la destination. Je pensais pas que ce serait aussi simple sachant que je ne voulais pas le formules mais c'est parfait :)

Merci

Bonne journée
Libreoffice v: 5.2.7.2
Linux Debian 9