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
