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]