Funzione Copia automatica con listato di 90 numeri

Salve a tutti. Osservando il topic dell’utente Westham volevo gentilmente chiedere a Gaetano (non solo a lui ovvio,ma a chiunque esperto in materia),se si poteva fare una cosa analoga (preferibilmente tramite una macro) con la funzione Copia,applicata in qualche modo ai soli valori numerici. Entro nel dettaglio così e’ tutto più chiaro. Facendo riferimento al file allegato vorrei che la cella Q1 si trasformasse in un listato di 90 numeri (quello che ho io creato in maniera fittizia in Q1,non rispecchia chiaramente la scala da 1 a 90 ma purtroppo non sapevo come fare). A fianco di questa lista,saranno presenti 90 righe di 4 numeri ciascuna,partendo da R1-U1 fino ad arrivare a R90-U90. Bene,a seconda della cifra che verrà inserita in cella Q1,entrerá a questo punto in gioco la suddetta funzione Copia,con la riga di riferimento che dovrà essere evidenziata (al momento non trovo il termine giusto per definire il momento quando i ranges vengono preposti a questo processo,mi scuso). Se ad esempio in Q1 selezionerò il numero 57,automaticamente la riga 57 andrà a porsi in risalto,affinché questa/o row/intervallo possa essere già pronta/o per essere incollata/o da qualche altra parte (sullo stesso foglio o in un file diverso). Spero di aver espresso bene il concetto. Una buona serata

Senza nome 1.ods (9.4 KB)

senza nome

La macro è abbastanza semplice, ti allego file…
Io ho lasciato tutto come da tuo allegato, ho messo i numeri presenti nel menù a tendina in Q1 in ordine, invece i 4 numeri che compongono le righe come devono essere inseriti? devono essere generati oppure cosa?

Sub Copia(Target)
Sh = Target.getSpreadsheet()
oCell() = Split(Target.AbsoluteName, ".")
oCellTarget = oCell(1)
If oCellTarget = "$Q$1" Then 
   Riga= Target.String
   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   dim args1(0) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "ToPoint"
   args1(0).Value = "$R$" & Riga & ":$U$" & Riga
   dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
   dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

End If 

End Sub

Senza nome 1.ods (10.9 KB)

Ciao,i 4 numeri che compongono le righe vengono generati da calcoli miei pregressi circa contabilità aziendale ed altro ancora. Ho semplificato e…raso a zero(0) il file per rendere tutto
più semplice. Svilupperò poi di nuovo con calma il tabulato. Quello che mi occorreva era
proprio il concetto di base che grazie alla tua macro mi semplifica notevolmente il lavoro.
Grazie mille

1 Like

Ciao Gaetano. Come ti ho scritto sull’altro Forum le 2 cose si differenziano e il problema è diverso perchè qui si parlava di 90 numeri mentre lì il listato riguarda solo i numeri presenti in B1-B12. Con la macro che mi hai gentilmente scritto qui,mettendo ad esempio il numero 45,la funzione “Copia” si attiva esattamente sulla riga 45 mentre quello che adesso mi serviva è che prendendo sempre ad esempio il valore 45 la funzione “Copia” si attivasse in riga 7 dove è presente il numero 45 insieme al 90 e al 54. Altro esempio : inserendo in A1 il valore 90 avevo bisogno che la funzione “Copia” si attivasse in riga 12 dove oltre al 90 sono presenti anche il 45 e il 54. Se nel piccolo listato che ho inserito su Open Office provo a usare la tua macro (questa qui di Ask),mettendo in A1 il 90 la funzione “Copia” mi si attiva in riga 90. Quindi presumo a questo punto ci fosse bisogno di una modifica della macro. Ecco perchè ho riproposto questo argomento su Open Office. Comunque adotterò le soluzioni proposte da Muset ed Eugenio. Grazie a voi e buona serata

Ricevuto replica con macro su Open Office. Grazie mille :slightly_smiling_face: