[Résolu][Calc] Copier / coller dans un autre classeur

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 !
kopekkkk
NOOuvel adepte
NOOuvel adepte
Messages : 17
Inscription : 18 janv. 2014 08:29

[Résolu][Calc] Copier / coller dans un autre classeur

Message par kopekkkk »

Bonjour,

Je dois écrire une macro qui récupérera le contenu de certaines cellules et ira ouvrir un un second document calc, y recopiera les cellules puis le refermera (Il s'agit d'y accumuler les résultats obtenus par le premier document).

J'ai trouvé des choses intéressantes dans le livre de Marcelly et Godard, ainsi que dans les suprêmes, ici : https://forum.openoffice.org/fr/forum/v ... =15&t=6371

J'ai arrangé la macro de Piaf car, à la différence de sa macro, je ne veux pas créer un document, pour mon stockage, mais en ouvrir un qui existe déjà.

Voici le code que j'ai bidouillé :

Code : Tout sélectionner

Sub CopyZoneNewClasseur()
    Dim oDoc as Object, monDocument as Object, oRange as Object, aCopier as Object, sheet as object
    Dim adresseDoc as String
       oDoc = thisComponent
       adresseDoc = ConvertToURL("C:\Users\SONY\Desktop\DocCible.odt")
       oRange = oDoc.Sheets(0).getCellRangeByName("A1:D1")
       oDoc.CurrentController.Select(oRange)
       aCopier = oDoc.CurrentController.getTransferable()
       monDocument = StarDesktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array() )
       oRange = monDocument.Sheets(0).getCellRangeByName("A1")
       monDocument.CurrentController.Select(oRange)
       monDocument.CurrentController.insertTransferable(aCopier)
    End Sub



et voici le message d'erreur que j'obtiens :
Erreur d'exécution Basic.
Une exception s'est produite :
Type : com.sun.star;lang;IllegalArgumentException
Message : Unsupported URL <file:///C:/Users/SONY/Desktop/docCible>.

Une ligne du code est surlignée :

Code : Tout sélectionner

       	monDocument = StarDesktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array() )
Je n'arrive pas à corriger cette erreur...

Le fichier est en pièce jointe

Cordialement

ff
DocSource.ods
Feuille calc qui doit exporter certaines cellules dans une autre feuille
(12.01 Kio) Téléchargé 79 fois
Dernière modification par kopekkkk le 30 mars 2014 16:05, modifié 1 fois.
Libre Office Version: 4.1.5.3 sous Windows7
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 01 mai 2011 01:08
Localisation : Casablanca (Maroc)

Re: [Calc] Copier / coller dans un autre classeur

Message par alhazred »

Bonjour,

La macro de ton classeur est différente de celle que tu indiques.

Dans ton classeur, il y a

Code : Tout sélectionner

adresseDocCible = ConvertToURL("C:\Users\SONY\Desktop\DocCible")
sans l'extension .odt que tu as indiquée dans ton message. Une erreur d'ailleurs, puisque plus tard tu utilises la propriété sheets

De plus, tu te mélanges savamment les pédales avec les noms de variables. Bref...

Code : Tout sélectionner

Sub CopyZoneNewClasseur()
Dim oDoc as Object, DocCible as Object, oRange as Object, aCopier as Object
Dim adresseDocCible as String
	oDoc = thisComponent
	adresseDocCible = ConvertToURL("C:\Users\SONY\Desktop\DocCible.ods")
	oRange = oDoc.Sheets(0).getCellRangeByName("A1:D1")
	oDoc.CurrentController.Select(oRange)
	aCopier = oDoc.CurrentController.getTransferable()
	DocCible = StarDesktop.loadComponentFromURL(adresseDocCible, "_blank", 0, Array() )
	oRange = DocCible.Sheets(0).getCellRangeByName("A1")
	DocCible.CurrentController.Select(oRange)
	DocCible.CurrentController.insertTransferable(aCopier)
	DocCible.store
	DocCible.Close(True)
End Sub
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
kopekkkk
NOOuvel adepte
NOOuvel adepte
Messages : 17
Inscription : 18 janv. 2014 08:29

Re: [Calc] Copier / coller dans un autre classeur

Message par kopekkkk »

Ca marche!

Merci beaucoup alhazred!
Libre Office Version: 4.1.5.3 sous Windows7
Répondre