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