Bart Aimar ha scritto:
Quindi ti serve una macro...
Ma vorresti delle dritte per provare a scriverla o cerchi qualcosa
chiavi in mano?
Ho deciso per il chiavi in mano... poi ti mando la fattura... :-)
Ho messo insieme un po' di codice... prova se ti funziona.
bello sarebbe che, inserendo una nuova riga in Tabella1, "qualcosa" la
riportasse in Tabella2, ordinandola appropriatamente.
Questo mi sembra giĆ molto complicato... :-)
Ci ho pensato un po' su, ma qui non so come aiutarti...
ciao
Bart
REM ***** BASIC *****
Sub Main_valerio
Duplica_Sheet1
Riordina_A (2, true)'
'il numero 2 corrisponde
' alla colonna C
end sub
Sub Duplica_Sheet1
' duplica un foglio e aggiunge un suffisso al nome
dim iNumInser as integer
oDoc = thisComponent
sNomeSheet = oDoc.currentcontroller.activesheet.name
oSheet = oDoc.currentcontroller.activesheet
''' Copy_PageStyle
print_area= oSheet.getPrintAreas
' registro l'area di stampa
RepeatRows = oSheet.getTitleRows
'registro le righe da ripetere (intestazione colonna)
PrintRepeatRows = oSheet.PrintTitleRows
' i parametri "optional" devono essere verificati nell'ordine
' in cui vengono passati!!
if isMissing (sSuffix) Then
sSuffix = "_print"
else
sSuffix = "_copia"
end if
sRaggrup = sNomeSheet & sSuffix
If thisComponent.Sheets.hasByName(sNomeSheet & sSuffix) Then
If thisComponent.Sheets.hasByName(_
sNomeSheet & sSuffix & "_bk") Then
thisComponent.Sheets.removebyname(_
sNomeSheet & sSuffix & "_bk")
end if
oSheet = oDoc.Sheets.getByName(sNomeSheet & sSuffix)
oSheet.Name = sNomeSheet & sSuffix & "_bk"
end if
oDoc = ThisComponent
iNumInser = oDoc.Sheets.count
sNome = sNomeSheet & sSuffix
oDoc.Sheets.CopybyName(sNomeSheet,sNome, iNumInser)'
oSheet = oDoc.Sheets.getByName(sNomeSheet & sSuffix)
oDoc.CurrentController.SetActiveSheet(oSheet)
' Salta al foglio duplicato
oSheet.setPrintAreas(print_area)
oSheet.setTitleRows(RepeatRows)
oSheet.setPrintTitleRows(PrintRepeatRows)
END SUB
Function Riordina_A (_
ColRior as integer, AscDesc as boolean)as variant
' Riordina l'elenco prezzi con criteri
' a scelta...
dim lrowF as long
dim oSheet as object
odoc = thiscomponent
oSheet = odoc.Sheets.getByName(_
odoc.currentcontroller.activesheet.name)
oLastCell = getLastUsedCell(oSheet)
lcolEnd = oLastCell.Endcolumn
lrowEnd = oLastCell.EndRow
oMioRange = osheet.getCellRangeByPosition(0,1,lcolEnd,lrowEnd)
' e poi lo riordina
Dim oSheetDSC,oDSCRange As Object
Dim aSortFields(0) As New com.sun.star.util.SortField
Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue
aSortFields(0).Field = ColRior ' 0
aSortFields(0).SortAscending = AscDesc 'TRUE'FALSE
aSortDesc(0).Name = "SortFields"
aSortDesc(0).Value = aSortFields()
oMioRange.Sort(aSortDesc())
Riordina_A = lrowF
End Function
Function getLastUsedCell(oSheet as Object)
Dim oCell As Object
Dim oCursor As Object
Dim aAddress As Variant
oCell = oSheet.GetCellbyPosition( 0, 0 )
oCursor = oSheet.createCursorByRange(oCell)
oCursor.GotoEndOfUsedArea(True)
aAddress = oCursor.RangeAddress
GetLastUsedCell = aAddress'.EndRow
End Function
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]