Grazie 
Una buona idea

—
Distinti Saluti
Andrea NARDI

> Il giorno 10 mag 2022, alle ore 09:19, Carlo Magistrelli 
> <ca...@magistrelli.it> ha scritto:
> 
> 
> Ciao.
> Ci saranno sicuramente metodi più eleganti per estendere la selezione,
> ma se modifichi l'istruzione
> args1(0).Value = "$B$2:$D$9"
> in
> args1(0).Value = "$B$2:$D"
> quando esegui la macro il programma ti chiede se vuoi eseguirla su tutte le 
> celle adiacenti,
> selezionate automaticamente (ovviamente non ci devono essere righe vuote in 
> mezzo).
> Ciao
> Carlo M.
> 
>> Il giorno mar 10 mag 2022 alle ore 05:40 Andrea Nardi <a.nard...@gmail.com> 
>> ha scritto:
>> Gianpaolo,
>> Grazie della risposta. In effetti anche a me sembrava che mancasse roba nel 
>> codice della macro come se la registrazione si fosse interrotta anzitempo.
>> Per quanto concerne il fatto che l’area da ordinare sia fissa, non è un 
>> problema. In effetti le colonne crescono di lunghezza mano mano che aggiungo 
>> dati ma pensavo di risolvere il problema modificando la macro nella riga di 
>> codice che individua l’area da ordinare scrivendo ad esempio $B$2:$D$1000 in 
>> modo da avere un range maggiore oppure usare qualche altro sistema per 
>> individuare l’ultima riga scritta sul foglio.
>> Proverò di nuovo a registrare la macro (prima di utilizzare il codice che 
>> hai fornito tu) giusto per capire se la versione LO che uso (mi pare 
>> 7.3.2.3) non abbia qualche problema in merito.
>> Grazie
>> 
>> —
>> Distinti Saluti
>> Andrea NARDI
>> 
>> > Il giorno 9 mag 2022, alle ore 23:27, gianpaolo_marcolongo 
>> > <gianpaolo_marcolo...@newwhitebear.net> ha scritto:
>> > 
>> > Ciao Andrea,
>> > 
>> > ho esaminato il tuo problema e mi sembra che nel basic fornito ci sia 
>> > qualcosa che manchi.
>> > 
>> > Io ho fatto registra macro. Poi ho selezionato l'area - da colonna b a 
>> > colonna d, perché sulla colonna a ho riportato i dati relativi a ROW - ho 
>> > aperto la finestra di dialogo  ordina, selezionato le due chiavi, chiave 1 
>> > colonna c, chiave 2 colonna d. E poi ok. terminato il sorto ho terminato 
>> > la registrazione della macro, assegnando un nome modulo e un nome macro.
>> > 
>> > Il basic relativo è quello riportato sotto.
>> > 
>> > REM  *****  BASIC  *****
>> > 
>> > Sub Main
>> > 
>> > End Sub
>> > 
>> > 
>> > sub Ordinamento1
>> > rem ----------------------------------------------------------------------
>> > rem define variables
>> > dim document   as object
>> > dim dispatcher as object
>> > rem ----------------------------------------------------------------------
>> > rem get access to the document
>> > document   = ThisComponent.CurrentController.Frame
>> > dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
>> > 
>> > rem ----------------------------------------------------------------------
>> > dim args1(0) as new com.sun.star.beans.PropertyValue
>> > args1(0).Name = "ToPoint"
>> > args1(0).Value = "$B$2:$D$9"
>> > 
>> > dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>> > 
>> > rem ----------------------------------------------------------------------
>> > rem dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, Array())
>> > 
>> > rem ----------------------------------------------------------------------
>> > dim args3(11) as new com.sun.star.beans.PropertyValue
>> > args3(0).Name = "ByRows"
>> > args3(0).Value = true
>> > args3(1).Name = "HasHeader"
>> > args3(1).Value = false
>> > args3(2).Name = "CaseSensitive"
>> > args3(2).Value = false
>> > args3(3).Name = "NaturalSort"
>> > args3(3).Value = false
>> > args3(4).Name = "IncludeAttribs"
>> > args3(4).Value = true
>> > args3(5).Name = "UserDefIndex"
>> > args3(5).Value = 0
>> > args3(6).Name = "Col1"
>> > args3(6).Value = 3
>> > args3(7).Name = "Ascending1"
>> > args3(7).Value = true
>> > args3(8).Name = "Col2"
>> > args3(8).Value = 4
>> > args3(9).Name = "Ascending2"
>> > args3(9).Value = true
>> > args3(10).Name = "IncludeComments"
>> > args3(10).Value = false
>> > args3(11).Name = "IncludeImages"
>> > args3(11).Value = true
>> > 
>> > dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args3())
>> > 
>> > 
>> > end sub
>> > 
>> > Come noti è assai più corposo del tuo. Poi in organizza macro ho assegnato 
>> > un pulsante. Chiusa questa fase ho ripristinato i dati da trattare come in 
>> > origine - ovviamente al termine della registrazione macro il foglio è 
>> > risultato sortato - ed ho eseguito il pulsante assegnato. Il risultato è 
>> > quello che tu volevi senza nessun intervento manuale come volevi tu.
>> > Il limite di questa macro è che area e colonne da sortare sono fisse e non 
>> > modificabili. Se questo risolve il tuo problema va benissimo ma se le aree 
>> > o le colonne possono variare no.
>> > Gian Paolo
>> > 
>> > 
>> > Il 08/05/22 15:51, Andrea Nardi ha scritto:
>> >> Salve a tutti. Ho il seguente problema:
>> >> un foglio calc con i seguenti dati:
>> >> 
>> >>     Col Col Col
>> >>     A    B    C
>> >> Row
>> >> 2    1    1    b
>> >> 3    2    1    a
>> >> 4    3    3    d
>> >> 5    4    7    h
>> >> 6    5    7    g
>> >> 7    6    4    j
>> >> 8    7    4    f
>> >> 9    8    8    k
>> >> 
>> >> Vorrei una macro per metterli in ordine secondo la colonna B e poi C.
>> >> 
>> >> Il risultato dovrebbe essere il seguente:
>> >> 
>> >>     Col Col Col
>> >>     A    B    C
>> >> Row
>> >> 2    2    1    a
>> >> 3    1    1    b
>> >> 4    3    3    d
>> >> 5    7    4    f
>> >> 6    6    4    j
>> >> 7    5    7    g
>> >> 8    4    7    h
>> >> 9    8    8    k
>> >> 
>> >> Ho utilizzato (come usualmente faccio a lavoro su Excel...) il comando 
>> >> Registra macro.
>> >> Ho selezionato le 3 colonne dalla riga 2 alla 9, quindi ho fatto clic sul 
>> >> pulsante [AZ] che fa comparire l'apposita finestra di dialogo per 
>> >> l'ordinamento. Ho selezionato le due chiavi di ordinamento e fatto clic 
>> >> su OK. Poi ho terminato la registrazione. Inserito il nome della macro e 
>> >> del modulo (lasciando quello di default).
>> >> La macro registrata è questa:
>> >> 
>> >> REM  *****  BASIC  *****
>> >> 
>> >> 
>> >> sub Ordinamento
>> >> rem ----------------------------------------------------------------------
>> >> rem define variables
>> >> dim document   as object
>> >> dim dispatcher as object
>> >> rem ----------------------------------------------------------------------
>> >> rem get access to the document
>> >> document   = ThisComponent.CurrentController.Frame
>> >> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
>> >> 
>> >> rem ----------------------------------------------------------------------
>> >> dim args1(0) as new com.sun.star.beans.PropertyValue
>> >> args1(0).Name = "ToPoint"
>> >> args1(0).Value = "$A$2:$C$9"
>> >> 
>> >> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>> >> 
>> >> rem ----------------------------------------------------------------------
>> >> rem dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, Array())
>> >> 
>> >> 
>> >> end sub
>> >> 
>> >> Noto qualcosa di strano rispetto al codice che normalmente ottengo 
>> >> facendo le stesse operazioni in Excel ed infatti dopo aver aggiunto un 
>> >> pulsante collegato alla suddetta macro l'operazione non funziona.
>> >> Ho provato ad eliminare il rem dall'ultima riga di codice prima di end 
>> >> sub ed in questo modo eseguendo la macro compare la finestra di dialogo 
>> >> per l'ordinamento e cliccando su OK sembra funzionare l'operazione, ma io 
>> >> vorrei che la cosa avvenisse in modo trasparente semplicemente premendo 
>> >> il pulsante che ho aggiunto.
>> >> Cosa mi sfugge?
>> >> 
>> >> —
>> >> Distinti Saluti
>> >> Andrea NARDI
>> >> 
>> >> 
>> > 
>> > -- 
>> > Come cancellarsi: E-mail users+unsubscr...@it.libreoffice.org
>> > Problemi? 
>> > https://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
>> > Linee guida per postare + altro: 
>> > https://wiki.documentfoundation.org/Local_Mailing_Lists/it
>> > Archivio della lista: https://listarchives.libreoffice.org/it/users/
>> > Privacy Policy: https://www.documentfoundation.org/privacy
>> 
>> -- 
>> Come cancellarsi: E-mail users+unsubscr...@it.libreoffice.org
>> Problemi? https://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
>> Linee guida per postare + altro: 
>> https://wiki.documentfoundation.org/Local_Mailing_Lists/it
>> Archivio della lista: https://listarchives.libreoffice.org/it/users/
>> Privacy Policy: https://www.documentfoundation.org/privacy

-- 
Come cancellarsi: E-mail users+unsubscr...@it.libreoffice.org
Problemi? https://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
Linee guida per postare + altro: 
https://wiki.documentfoundation.org/Local_Mailing_Lists/it
Archivio della lista: https://listarchives.libreoffice.org/it/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Rispondere a