Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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

Context


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.