j'ai développé une macro dans le cadre du boulot, que j'utilisait sous OpenOffice.
Nous sommes maintenant passé à LibreOffice, et malheureusement, il y a quelques différences.
Et notamment ce qui me pose souci, la copie d'une feuille d'un classeur, vers un autre.
Etant novice, j'ai créé cette macro en "copiant" le code là où j'en trouvait (beaucoup ici) et je le modifiais pour qu'il corresponde à mon besoin.
Pour faire la copie d'une feuille du classeur A, et la copier dans le classeur B, j'ai utilisé le dispatcher:
Code : Tout sélectionner
Sub CopySheet2(sourceDoc,sourceSheet,destDoc,destSheet)
REM sourceDoc -> classeur d'origine
REM sourceSheet -> onglet du classeur d'origine
REM destDoc -> classeur où sera copié l'onglet du classeur d'origine
REM destSheet -> onglet de destination
Dim dispatcher As Object, sourceController As Object, destController As Object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
REM on pointe sur l'onglet d'origine
sourceController = sourceDoc.currentController
sourceController.Select sourceSheet
REM puis on copie la feuille
dispatcher.executeDispatch(sourceController.frame, ".uno:Copy", "", 0, Array())
REM puis on pointe sur la feuille de destinaiton sur l'autre classeur
destController = destDoc.currentController
destController.Select destSheet
REM et on colle
dispatcher.executeDispatch(destController.frame, ".uno:Paste", "", 0, Array())
End Sub
Cela marchait très bien sur Openoffice, mais là, il copie bien, mais ne colle pas.
J'ai essayé de coller moi même, ca marche bien, donc il copie bien la feuille.
A priori, il se place bien au bon endroit, mais ne veut pas coller.
Que dois-je changer pour que cela fonctionne de nouveau ?
Je vous joins le fichier, qui je l'espère contient la macro SST.
Lorsqu'on lance la macro SST, elle travaille sur le premier classeur, en crée un deuxième et vient y faire des opérations, après avoir copié le format des feuilles de destinations.
Je vous