Calc : Fusionner plusieurs feuilles dans une seule feuille

La fonction suivante permet de regrouper toutes les données des feuilles sur une même feuille, il faut pour cela créer une première feuille qui sera nommée « Bilan » :

Function Vincent_Copier_Feuilles()
 Dim oFichier As Object
 Dim oFeuil As Object
 Dim oCells As Object
 Dim oSelect As Object
 Dim oDestination As Object
 Dim oDel As Long
 Dim NbFeuil As Integer
 Dim x As Integer
 Dim i As Integer
 Dim oPos As ObjectoFichier = thisComponent
 oFeuil = oFichier.sheets
 oDestination = oFeuil.getByName("Bilan")

 oDel = com.sun.star.sheet.CellFlags.STRING
 ' Sélectionner toutes les cellules utilisées
 oCells = oDestination.createCursorByRange(oDestination.getCellRangeByName("A1")
 oCells.gotoEndOfUsedArea(True)
 oSelect = oDestination.getCellRangeByName(oCells.absoluteName)
 ' Effacer la feuille "Bilan" à partir de la cellule A1.
 oSelect.clearContents(oDel)
 ' Recopier dans la feuille "Bilan" toutes les celules utilisées des autres "Feuilles"
 NbFeuil = oFeuil.count
 ' ligne de départ pour la recopie sur la feuille "Bilan"
 i = 1  
 for x = 0 to NbFeuil - 1
 oUneFeuille = oFeuil(x)
 if left(oUneFeuille.Name,7) = "Feuille" then
 oCells = oUneFeuille.createCursorByRange(oUneFeuille.getCellRangeByName("A1")
 oCells.gotoEndOfUsedArea(True)
 oSelect = oUneFeuille.getCellRangeByName(oCells.absoluteName)
 oPos  = oDestination.getCellRangeByName("A" & i )
 oDestination.CopyRange(oPos.cellAddress,oSelect.RangeAddress)
 i = i + (oSelect.RangeAddress.EndRow - oSelect.RangeAddress.StartRow + 1)
 end if
 next x
End function