[Risolto] cancella-aggiungi celle con macro

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
solitariopc
Messaggi: 63
Iscritto il: mercoledì 1 febbraio 2012, 12:36

[Risolto] cancella-aggiungi celle con macro

Messaggio da solitariopc »

Buongiorno, a tutti i presenti sul forum. Sono di nuovo qui a chiedere aiuto. Non sono stato capace a cercare oppure non c'è un post alla soluzione che cerco per questa ragione chiedo un aiuto a Voi anche indirizzandomi nel posto giusto. Quello di cui ho bisogno è una macro che cancelli il range di celle A2:E6 e incollare le cinque righe del riquadro sottostante (celle A34:E38) nelle righe 27, 28, 29, 30, 31, (celle A27:E31) tenendo in questo modo sempre la lista che a me necessita. Informo chi legge che il file allegato è solo un esempio, il mio file personale e più corposo contiene 3500 righe con qualche colonna in più. Ho provato con il registratore di macro ma quando taglio, sposto e incollo mi restituisce valori non corretti. Le Funzioni (CONCATENA) non so seguono il cambio dei valori delle celle modificate ho provato e riprovato non ottengo la soluzione desiderata.
Grazie e buona giornata a Voi.

P.S. Allego foglio di esempio.
Allegati
cancella-aggiungi righe.ods
(24.39 KiB) Scaricato 100 volte
Ultima modifica di charlie il venerdì 3 agosto 2018, 7:20, modificato 2 volte in totale.
Motivazione: Aggiunto [Risolto]
LibreOffice 5.1.6.2 su LinuxMint 18
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: cancella-aggiungi celle con macro

Messaggio da patel »

non so se ho capito bene, ma prova questa

Codice: Seleziona tutto

Sub Main
Dim  range As Object
With ThisComponent.Sheets(0)
  Range = .getCellRangeByName("A35:E39").getRangeAddress()
  CellAddress  = .getCellRangeByName("A2").getCellAddress()   'Destination address 
  .copyRange(CellAddress, Range)
end with
end sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
solitariopc
Messaggi: 63
Iscritto il: mercoledì 1 febbraio 2012, 12:36

Re: cancella-aggiungi celle con macro

Messaggio da solitariopc »

Grazie Patel per avere risposto, la macro che Lei ha suggerito porta ha una soluzione parziale, le righe vengono si copiate ma nella posizione non desiderata. Le celle devono essere copiate in fondo alla lista cancellando le prime righe superiori (righe 2, 3, 4, 5, 6,) mantenendo la tabella sempre nelle 31 righe. Spero di essere stato più chiaro per l'aiuto chiesto.
Grazie ancora, buona giornata e sereno lavoro.
LibreOffice 5.1.6.2 su LinuxMint 18
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: cancella-aggiungi celle con macro

Messaggio da hubert lambert »

Ciao,

Se ho capito bene a mia volta, ecco un'altra proposta.
Per farla funzionare, devi dare il nome "tabella_fissa" alle celle A2:E31 e "tabella_nuova" alle celle A35:E39. La macro potrà essere utilizzata con qualsiasi gruppo di celle purchè questi due nomi siano utilizzati. Non importa il numero di righe e colonne, invece il numero di colonne deve essere lo stesso nei due gruppi.
La macro:

Codice: Seleziona tutto

sub main
	doc = thiscomponent
	tabella_fissa = doc.NamedRanges.getByName("tabella_fissa").ReferredCells
	dati_fissi = tabella_fissa.DataArray
	tabella_nuova = doc.NamedRanges.getByName("tabella_nuova").ReferredCells
	dati_nuovi = tabella_nuova.DataArray
	diff = ubound(dati_nuovi)
	max = ubound(dati_fissi)+1
	redim preserve dati_fissi(diff+1 to max+diff)
	for n = 0 to diff
		dati_fissi(max+n) = dati_nuovi(n)
	next n
	tabella_fissa.setDataArray(dati_fissi)
	tabella_nuova.clearContents(7)
end sub
Saluti.
Allegati
cancella-aggiungi righe.ods
(28.8 KiB) Scaricato 107 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
solitariopc
Messaggi: 63
Iscritto il: mercoledì 1 febbraio 2012, 12:36

Re: cancella-aggiungi celle con macro

Messaggio da solitariopc »

Salve, ho scaricato e smanettato sul file con la macro proposta da hubert lambert e dico che si, certamente, era quello che chiedevo ma che non avevo espresso in modo esaustivo all'inizio dell'argomento, grazie ancora a Hubert Lambert per la soluzione e anche a Patel per la sua risposta, cercherò di adattarla al mio file personale e cercherò il Vostro aiuto se non riuscissi nell'impresa. Per adesso spunto il messaggio come risolto
Grazie, grazie ancora a Voi.
Ciao.

P.S.
Non voglio approfittare della pazienza ma, sempre nel corretto spirito che anima il forum posso porre due domande specifiche: 1 le tabelle perché devono avere un nome (solo in questa circostanza o e buona prassi dare un nome sempre), 2 una spiegazione del codice scritto (sempre nel limite della mia conoscenza) può facilitare certamente l'apprendimento.
LibreOffice 5.1.6.2 su LinuxMint 18
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: cancella-aggiungi celle con macro

Messaggio da hubert lambert »

Con piacere ;) .
solitariopc ha scritto:1 le tabelle perché devono avere un nome (solo in questa circostanza o e buona prassi dare un nome sempre)
È più facile per l'utente se la macro utilizza nomi di celle, chè così basta modificare il gruppo abbinato al nome per utilizzare la macro con qualunque documento, senza toccare nemeno una linea di codice.
Ma non è mai un obbligo.
solitariopc ha scritto: 2 una spiegazione del codice scritto (sempre nel limite della mia conoscenza) può facilitare certamente l'apprendimento
Allego il file con commenti nella macro.
Allegati
cancella-aggiungi righe.ods
(25.52 KiB) Scaricato 93 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
solitariopc
Messaggi: 63
Iscritto il: mercoledì 1 febbraio 2012, 12:36

Re: cancella-aggiungi celle con macro

Messaggio da solitariopc »

Grazie, Hubert Lambert la Sua risposta è da lodare non solo per la competenza ma soprattutto per l'azione di acculturamento che dispensate a noi utenti della rete, rendendo l'open source una realtà con sempre maggior seguito.

Buona giornata e buon lavoro.
LibreOffice 5.1.6.2 su LinuxMint 18
Rispondi