[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fr-users] [BASIC] Comment faire un Copier/Coller avec mise en forme de cellules entre 2 classeurs


Bonjour,

Je bloque sur un point assez basic... (Tout est relatif)

Par macro, je n'arrive pas à faire un Copier/Coller qui me conserve les formules et les mises en forme entre 2 classeurs différents.

J'ai tenté avec deux approches sans succès :
- La méthode avec le .CopyRange
Comme sur le code ci-dessous
Sub CopySpreadsheetRange
oSheet1 = ThisComponent.Sheets.getByIndex(I) ' feuille d'originale
oSheet2 = oeval2correct.Sheets.getByIndex(I) ' feuille destinataire
oRangeOrg = oSheet1.getCellRangeByName("A1:C10").RangeAddress ' copie la plage
oRangeCpy = oSheet2.getCellRangeByName("A1:C10").RangeAddress ' insère la plage
oCellCpy = oSheet2.getCellByPosition(oRangeCpy.StartColumn,oRangeCpy.StartRow).CellAddress ' Position d'insertion
oSheet1.CopyRange(oCellCpy, oRangeOrg) ' copie ...
End Sub
Ce code fonctionne presque puisqu'il effectue le Copier/coller dans le même classeur (pas deux différents) alors que l'objet oeval2correct est bien correct.
(Il s'ouvre à l'écran suite à la ligne : oeval2correct = StarDesktop.loadComponentFromURL( sUrl , "_blank", 0, dummy) )

- La méthode qui utilise les DataArray qui recopie bien sur le second document mais en perdant toutes les mises en forme

Dim PlageDestination as object
Dim PlageSource as object
...
oeval2correct = StarDesktop.loadComponentFromURL( sUrl , "_blank", 0, dummy)
...

OFeuillesSources = ThisComponent.Sheets()
OFeuillesDestinations = oeval2correct.Sheets()
I = 0
do while I < OFeuillesSources.Count

FeuilleSource = OFeuillesSources.getByIndex(I)
FeuilleDestination = OFeuillesDestinations.getByIndex(I)
PlageSource = FeuilleSource.getCellRangeByName("F1:M250")
PlageDestination = FeuilleDestination.getCellRangeByName("F1:M250")
PlageDestination.DataArray = PlageSource.DataArray

I = I + 1
loop

Connaissez-vous une autre technique j'ai tenté l'enregistreur de Macro, mais les opérations effectuées sur le classeur cible ne sont pas enregistré.



--
Samuel MOUNIER
INFORMATICIEN (CGO)
------------------------------------------------------------------------
Les listes francophones plus libres sont aussi :
- http://wiki.documentfoundation.org/Local_Mailing_Lists#French
- http://www.geckozone.org/listes/

--
Envoyez un mail à users+help@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés

Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.