Le 2005-06-28 12:20, THEVENOUX Jean-Philippe a écrit :

J'ai un problème lors d'un copier/coller via une macro, le coller marche, mais pas le copier donc au final, la macro colle la dernière chose qui a été copier, et non pas ce que j'ai demandé.
Ah oui, le copier/coller se fait dans deux fichiers !!!

Voila ma macro simplifié :
( . . . )
oDoc = StarDesktop.LoadComponentFromURL(convertToURL(CheminSource + "Essai.ods"), "_blank", 0 ,Args())

Bonjour Jean-Philippe,
L'important dans ta macro, c'est qu'elle est exécutée avec une version non finalisée de la version 2 d'OpenOffice. Il faut toujours se méfier dans ce cas. J'ai refait deux essais plus simples afin de cerner le problème. J'utilise Windows XP Home SP2.

--------

Essai 1 : copier-coller dans la même feuille du même document.

Sub copierEtColler
dim Feuille as object
dim oRange as object
dim Args(0) as new com.sun.star.beans.PropertyValue
dim dispatcher as object
dim oDoc as object
dim args4(5) as new com.sun.star.beans.PropertyValue

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Feuille = ThisComponent.Sheets.getByName("Feuille1")
oRange = Feuille.getCellRangeByName("B5:C6")
ThisComponent.CurrentController.Select(oRange)

' copier la zone actuellement sélectionnée
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:Copy", "", 0, Array())

oRange = Feuille.getCellRangeByName("F4")
ThisComponent.CurrentController.Select(oRange)
' coller dans la nouvelle zone
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:Paste", "", 0, array())
End Sub

La macro est déclenchée par un bouton sur la même feuille.
OOo 1.1.4 (fichier sxc) : la macro fonctionne correctement
OOo 1.9.100 (fichier ods) : la macro ne copie rien et ne colle rien
OOo 1.9.100 (fichier sxc) : la macro ne copie rien et ne colle rien


------

Essai 2 : copier depuis un document, coller vers un autre document

Sub copierCollerEntreDocs
dim Feuille as object, Feuille2 as object
dim oRange as object
dim Args(0) as new com.sun.star.beans.PropertyValue
dim dispatcher as object
dim oDoc as object
dim args4(5) as new com.sun.star.beans.PropertyValue

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Feuille = ThisComponent.Sheets.getByName("Feuille1")
oRange = Feuille.getCellRangeByName("B5:C6")
ThisComponent.CurrentController.Select(oRange)

' copier la zone actuellement sélectionnée
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:Copy", "", 0, Array())
' ouvrir autre document
CheminSource = "C:\Docs OpenOffice\"
Args(0).Name = "Hidden"
Args(0).Value = true
oDoc = StarDesktop.LoadComponentFromURL(convertToURL(CheminSource + "cibleO2.ods"), "_blank", 0 ,Args())
Feuille2 = oDoc.Sheets.getByName("Feuille2")
oRange = Feuille2.getCellRangeByName("F4")
oDoc.CurrentController.Select(oRange)
' coller dans la nouvelle zone
dispatcher.executeDispatch(oDoc.CurrentController.Frame, ".uno:Paste", "", 0, array())
oDoc.Store
oDoc.Close(True)
End Sub

La macro est déclenchée par un bouton sur la même feuille du premier document.
OOo 1.1.4 (fichier sxc) : la macro fonctionne correctement
OOo 1.9.100 (fichier ods) : la macro ne copie rien, mais colle le contenu courant du presse-papier. OOo 1.9.100 (fichier sxc) : la macro ne copie rien, mais colle le contenu courant du presse-papier.

------------

Conclusion:
Tu as trouvé une belle bogue. Il ne te reste plus qu'à faire un joli rapport en anglais sur IssueZilla et prier les dieux de la programmation pour qu'elle soit corrigée un jour.

 Bonne journée
   Bernard


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à