[Résolu][Calc] Collage Spécial avec InsertTransferable

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 !
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

[Résolu][Calc] Collage Spécial avec InsertTransferable

Message par ooSikas »

Bonjour

Dans mon tableur, j'utilise une macro pour trier des lignes qui copie et colle des lignes de grandes dimension.

Pour cela je sélectionne la plage de cellule à copier, puis j'utilise getTransferable et insertTransferable vers ma cellule cible.

Je souhaiterai limiter mon copier coller aux Texte et aux Nombres. et ainsi ne pas recopier tout le formatage conditionnel associé à chacune de ces cellules.

Savez vous comment faire?

Merci d'avance pour votre aide

Code : Tout sélectionner

Sub Transposer_Vers_Tampon (oCalc as object, oFeuille as object, oCell as object)


	Dim LigneCible as integer
	Dim Arrivee_Affaire as integer
	Dim oRange As object
	Dim oCellDestination as object


	LigneCible = oCell.CellAddress.Row
	Arrivee_Affaire = oFeuille.getCellRangeByName("num_last_col").CellAddress.Column
	oRange = oFeuille.getCellRangeByPosition(0,LigneCible,Arrivee_Affaire,LigneCible+1)
	oCellDestination = oFeuille.getCellRangeByName("ligne_tampon")
	
'Copier la plage	
	oCalc.CurrentController.Select(oRange)
	aCopier = oCalc.CurrentController.GetTransferable

'Coller la plage
	oCalc.CurrentController.Select(oCellDestination)
	oCalc.CurrentController.InsertTransferable(aCopier)

'Vider la ligne 
	oCalc.CurrentController.Select(oRange)
	call Vider_ligne()

'Repositionner curseur
	oCalc.CurrentController.Select(oCell)
	   	
	
End sub
Dernière modification par ooSikas le 28 mai 2020 06:14, modifié 1 fois.
LibreOffice Version: 6.4.4.2 sous Windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Collage Spécial avec InsertTransferable

Message par OOotremer971 »

Bonjour,

Avec un fichier et quelques données bidon on aurrait pu faire un test.

Essaye de remplacer la séquence :

Code : Tout sélectionner

'Copier la plage   
   oCalc.CurrentController.Select(oRange)
   aCopier = oCalc.CurrentController.GetTransferable

'Coller la plage
   oCalc.CurrentController.Select(oCellDestination)
   oCalc.CurrentController.InsertTransferable(aCopier)
par

Code : Tout sélectionner

zone_destination.DataArray = zone_source.DataArray
attention : zone_destination et zone_source doivent-être des plages de dimension strictement identique (nombre ligne, nombre de colonne) contrairement à la précédente méthode qui tolère que la zone_destination soit une seule cellule.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9256
Inscription : 28 août 2010 08:45

Re: [Calc] Collage Spécial avec InsertTransferable

Message par micmac »

Bonjour,
Dans votre signature il y a écrit : LibreOffice Version: 5.4.7.2
Cette version de LibO est obsolète.
Si c'est une obligation, mentionnez-le dans votre signature en ajoutant Obligation de version.

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version officielle stable.

Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

Re: [Calc] Collage Spécial avec InsertTransferable

Message par ooSikas »

Bonjour

Merci beaucoup OOotremer971 pour ta solution , c'est exactement ce qu'il me fallait :super:

Micmac, je met à jour mon LibreOffice, j'avais apparemment décoché les maj automatiques je ne sais pas pourquoi, merci de l'info
LibreOffice Version: 6.4.4.2 sous Windows 10