Calc: impostare un'area di ordinamento automatico con pulsante per attivarla **en** Calc: set an automatic sorting area with a button to activate it

Buongiorno!
Nel foglio condiviso, vorrei che ci fosse un pulsante per attivare con un click l’ordinamento automatico dei “Nome operatore” con tutte le info relative, per intenderci, da B3 a BK382, con l’ordinamento che segua ovviamente la colonna B con l’esclusione della riga 1.
Grazie!
Conteggio Missioni Operatori.ods (25,1 KB)

en
Hello!
In the attached file, I would like to place a button to activate the automatically sorting of the “Nome Operatore” with all the relative info. So to understand, from B3 to BK382, with the sorting that obviously follows column B with the exclusion of row 1.
Thanks!

Si può fare utilizzando una macro specifica.

Per funzionare occorre:

  1. impostare le condizioni di sicurezza macro sulla postazione di lavoro siano sul valore “Medio” procedendo da: Menu > Strumenti > Opzioni > Sicurezza > Sicurezza delle macro > Selezionare “Medio” e confermare;
  2. cliccare sul pulsante “abilita macro” nella finestrella di avviso che apparirà all’apertura del file (per permetterne le funzionalità).



Test - MacroOrdinaNominativoCrescenteInFileCondiviso.ods (29.8 KB)

1 Like

Grazie Lucky63 per il file perfettamente funzionante secondo le richieste.
Quel che Ti chiedo è la gentilezza di spiegarmi come hai creato la macro, in modo da poterla riprodurre e gestire in autonomia.
Grazie!

en:
Thanks Lucky63, the file works exactly as I want. What I’m asking You is to teach me how do You have created the macro, so to understand how to manage it directly.
Thanks!

Menu > Strumenti > Macro > … Organizza Macro > Basic > …
Se “ispezioni” il file riscontrerai la presenza del codice macro utilizzato …


.

Sub OrdinaPerNominativoCrescente
Doc = ThisComponent ' il documento in uso
Foglio = Doc.Sheets(0) ' il primo foglio
Range = Foglio.getCellRangeByName("B3:BK382") ' Area dati interessata
REM Array da filtrare con 1 sola colonna
Dim oSortFields(0) As New com.sun.star.util.SortField
REM Proprietà contente i campi filtro.
Dim oSortDesc(0) As New com.sun.star.beans.PropertyValue
REM Nota bene: Le colonne del range interessato sono numerate partendo da 0
REM così per questo esempio esempio ove il range parte da colonna B la colonna B sarà la colonna 0
Rem Se il range partisse da altra colonna sarebbe quella la colonna 0
oSortFields(0).Field = 0 ' Per il range B3:BK382 La colonna B è 0 - Quindi per ordinare per colonna B Field=0
oSortFields(0).SortAscending = TRUE ' Usando TRUE l'rdinamento è ASCENDENTE. Con FALSE l'ordinamento è DISCENDENTE
REM Imposta descrizione filtraggio
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Filtra il range.
Range.Sort(oSortDesc())
End Sub

La macro va poi collegata all’evento “Esegui azione” del pulsante …
.

1 Like