[Risolto] CopiaIncollaPersonaliz, SaltoRighe, OrigineFoglio

Non sapete dove scrivere? Scrivete qui!
Regole del forum
Solo richieste di aiuto. Per saluti e presentazioni utilizzate il forum Discussioni Generali e Presentazioni.
Rispondi
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

[Risolto] CopiaIncollaPersonaliz, SaltoRighe, OrigineFoglio

Messaggio da Biagio91 »

Ciao a tutti,
ho cercato qui nel forum e ho trovato molti spunti interessanti molto frequentemente;
Complimenti e Grazie a tutti.

Mi trovo di fronte ad un problemino, forse da nulla, evitabile, ma ormai voglio risolverlo per curiosità ed interesse personale.

Su un Foglio "Prototipo" (che serve solo ed esclusivamente a questo) ho impostato un prototipo (struttura) di inserimento dati e copiato questa struttura prototipo in tutti i fogli successivi.
Vorrei riuscire, una volta completato l'inserimento dati in uno qualsiasi degli altri fogli (quindi tutti uguali), a copiare il prototipo originale vuoto, sotto alla struttura già compilata di un foglio "inserimento dati", per avere quindi a disposizione una nuova struttura su cui scrivere i nuovi dati.

Vi chiedo consiglio in quanto, causa principale la scarsa competenza, non riesco ad uscirne.

Avrei pensato di affrontarla così:
Presupponiamo che le prime 10 righe del foglio "Prototipo" siano quelle che mi serve copiare; il resto è vuoto in ogni caso.
La prima colonna di questa struttura contiene solamente 1 dato in una sola riga, la prima, e serve come identificativo della lavorazione; questo campo ID viene inserito (sempre) prima di inserire qualsiasi altro dato nella struttura.
Nel Foglio.2 quindi la colonna A contiene come ultimo dato l'ID della lavorazione. Una volta completato l'inserimento dei dati, si vuole fare Click su un pulsante inserito in barra degli strumenti, che esegue una macro (come da procedura spiegata nella guida). Con questa macro vorrei fare in modo che ci si spostasse (a prescindere) sulla colonna A, quindi sull'ultimo dato inserito nella colonna A del "Foglio Attivo", da li si contassero per esempio 12 righe in giù, e si incollasse la nuova struttura del foglio prototipo (le righe da A1 ad A10), bella vuota e pronta.
****(vedi Note)****
Questa macro dovrebbe avere obbligatoriamente un riferimento "dinamico" al foglio in quanto devo poterla usare per tutti e quanti i fogli, ed è d'obbligo evitare di creare un'infinità di Macro, per questo ho evidenziato "Foglio Attivo".


Sto sbagliando ad affrontare il problema?
Eventualmente sapreste darmi qualche indicazione su come strutturare il codice dell'opzione che vi ho presentato?
Ho visto vari thread sull'argomento, ma quelli che più si avvicinano alla mia problematica sono focalizzati sul NomeDelFoglioAttivo e mi sembra che siano un po' (passatemi il termine) restrittivi per l'utilizzo che dovrei farne io, o per lo meno non riesco a vederci oltre perché non saprei proprio come implementare quella metodologia.

Tutto questo problema nasce dall'esigenza di non appesantire troppo il file evitando quindi di creare a priori 15-20 strutture prototipo vuote per ogni foglio.


****Note:
--- Il top sarebbe che in questo frangente mi si aprisse una bella input box in cui inserire l'ID della lavorazione che sto per inserire :super: ma ahimè...mi sorge il dubbio che per fare questo forse sia il caso di dover Frammentare la Macro, quindi farle inserire solo il campo dell'ID della lavorazione, e una volta dato l'ok dalla InputBox allora nel "FoglioCorrente" incollare le prime 10 righe del "FoglioPrototipo" a partire dalla colonnaB, così si consoliderebbe anche il fatto che nulla si può scrivere su una struttura vuota se prima non è stato inserito l'ID della lavorazione :super: ---****


Grazie mille a chiunque sappia darmi una mano a voltare pagina.
Saluti
Ultima modifica di Biagio91 il venerdì 5 febbraio 2021, 15:56, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da charlie »

Ciao e benvenuto/a sul forum.
Se intanto ti vuoi presentare, farai cosa gradita. Puoi farlo in questa sezione -> viewforum.php?f=16

L’utente che apre un quesito si impegna: In caso di inosservanza saremo costretti ad azioni di “richiamo”, sospensione o chiusura del profilo utente.

Buon proseguimento.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

Buongiorno Charlie,
Pensavo di averlo già fatto ma evidentemente ho visualizzato solo l'anteprima e non ho inviato il messaggio.

Grazie mille per i link "Info" ne farò buon uso.
Vuoi che elimino e sposto su una sezione appropriata??

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da charlie »

Ciao, no non cancellare. Casomai sposterò io.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da lucky63 »

Allega file .ods di esempio con la struttura che vorresti gestire e replicare.
In qualche foglio replica manualmente quello che dovrebbe essere il risultato desiderato.
Togli eventuali dati sensibili.
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

Ciao lucky63, ho trovato alcune tue guide molto molto utili!!! Grazie.

Il file ce l'ho pronto, è vuoto tranne che per alcune cose che possono servire.
Intendevi questo con "Eliminare i dati sensibili" oppure si intende qualcosa di più specifico??

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da lucky63 »

Dati sensibili. Dati che riconducano a qualcuno/ditta/qualcosa di particolare, politica,m religione, stato sociale, ....
https://it.wikipedia.org/wiki/Dati_sensibili
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

Ok, allora nulla di presente.

Allego file esempio.
Allegati
Esempio.ods
(31.85 KiB) Scaricato 116 volte
Ultima modifica di Biagio91 il venerdì 5 febbraio 2021, 10:28, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da lucky63 »

Inserito blocco prime 11 righe di intestazione foglio così da poterle sempre avere in evidenza scorrendo in verticale il foglio.

Inserito pulsante “PROTOTIPO” nella barra strumenti standard (a fianco icona “anteprima di stampa”) che richiama la macro da qualsiasi foglio. Se richiamata dal foglio “Prototipo” un controllo la fa terminare.
Prototipo.png
Tra una tabella e l'altra lasciate 5 righe vuote come nel tuo esempio.
Per variare tale parametro modificare riga macro con codice:

Codice: Seleziona tutto

StepIncremento = 6 ' Da modificare secondo esigenza
Tramite InputBox viene chiesto all'utente l'inserimento del nuovo codice ID che se confermato verrà poi scritto al posto della parola ID nel blocco copiato.
...
.
Allegati
Test - CopiaAccodaModuloPrototipo.ods
(30.81 KiB) Scaricato 113 volte
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

:super:
Wow, proprio quello che cercavo di ottenere, è uno spettacolo lucky63
GRAZIE

1) Mi sfuggono alcune cose sul funzionamento del codice dell'adatta righe, in quanto sembra non "pescare" i valori corretti, possibile che al posto di "0 to 23" io debba mettere 11 to 36? Ho provato, e così facendo prende precisamente le righe interessate e non quelle dell'intestazione; eppure mi sfugge il perché del fatto che se per caso l'altezza di qualche riga nel FoglioAttivo, nell'intervallo in cui sto inserendo i dati, è superiore a quello dell'altezza della riga corrispondente sul FoglioPrototipo, quando eseguo la macro che dovrebbe adattare l'altezza, l'altezza rimane uguale :? da quello che capisco leggendo il codice, non dovrebbe succedere.
Per ora ho commentato quella parte in quanto forse potrebbe non servirmi...anche se visto che c'è un motivo ci sarà stato quando è stata pensata; deduco che tu abbia escluso qualche strano inconveniente che si può manifestare in determinate condizioni...ma non ci sono ancora arrivato purtroppo, un aiutino?

Provo a studiarmi un po' meglio il codice utilizzato.

2) Ho notato che mi servirebbe dare la possibilità di annullare l'inserimento del nuovo modulo; infatti, seguendo il percorso:
Click su PulsantePrototipo, apertura InputBox, click su Annulla o sul pulsante di chiusura, comunque compare il MsgBox di conferma dell'inserimento del modulo col NuovoID nullo, ora se dal MsgBox si prosegue con il pulsante OK il modulo viene creato senza il nome NuovoID *** mentre se si prosegue con il pulsante Annulla o Chiusura allora il NuovoModulo non viene creato.

***Note:
Può effettivamente tornare utile nel caso si voglia eseguire una prova, ma arrivarci dal tasto Annulla della InputBox...non mi convince molto, per lo meno non ho compreso appieno questa logica. Mi parrebbe più ovvio arrivarci lasciando il campo NuovoID vuoto e seguendo il percorso del comando OK.

Cerco di arrangiarmi cercando qualche info sulla struttura delle InputBox, sulle opzioni di scelta, sulle le azioni da eseguire e qualche esempio di sintassi da utilizzare. Presumo si debba aggiungere una IF pulsante premuto = OK then MsgBox [...], Else (quindi pulsante premuto = Annulla) Exit Sub. Mi faccio sentire in ogni caso anche se ci sono riuscito.

3) Il codice ha alcune parti che non capisco appieno. Me lo studio meglio cercando le cose che nn conosco, ma che vada posso domandarti qualche delucidazione?

Per quanto mi riguarda quello che volevo realizzare è fatto, il resto sono perfezionamenti del caso.
Aggiungerei Risolto se mi confermate che è corretto.

Ancora
GRAZIE
:super:
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da lucky63 »

1) Corretto
Fatto prove variando altezza righe 20 e 28 (altezza originaria 0,58) del prototipo da replicare.
Adattato blocco codice macro di verifica altezza riga replicata a quella del prototipo originario ed ora avviene correttamente. Ma se non vari altezza riga rispetto a quella di default puoi commentare le righe di codice.
2) Corretto
Aggiunto controllo su NuovoId acquisito da InputBox e ora se annulli o chiudi è Ok.
3) ...Mancano indicazioni ....
Vedi se ci arrivi da solo a comprendere. Ho inserito diversi commenti per facilitare il tutto.

Fai test per 1) e 2) ...
.
Allegati
Test - CopiaAccodaModuloPrototipo.ods
(31.95 KiB) Scaricato 100 volte
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

1) Spettacolo!!!!
GRAZIE

2) Ok, funziona perfettamente Grazie.
Perdonami ma giusto per curiosità....non riesco a capire come aggiungendo il codice

Codice: Seleziona tutto

If NuovoID = "" Then Exit sub
si riesca ad influire sui pulsanti della InputBox...cioè non esiste la possibilità di dirgli più o meno qualcosa tipo...se premi PulsAnnulla o Chiusura dalla InputBox allora Exit Sub...???
Lo domando per pura curiosità e perché pensavo ↓
2.1) Si potrebbe implementare il "se si vuole creare un modulo con valore nullo lo si crea comunque e il campo NuovoID verrebbe compilato col testo [Nullo]" dicendogli qualcosa del genere?
Abbozzo molto ignorantemente, sperando di non fare danni (ovviamente mancherebbe la parte relativa al punto 2 perché solo con questo codice torneremmo indietro al fatto che premendo PulsAnnulla o PulsChiusura si prosegue comunque alla MsgBox):

Codice: Seleziona tutto

NuovoID = InputBox ("Inserire il nuovo codice ID" , "ATTENZIONE:")
If NuovoID = "" Then NuovoID = "[Nullo]"
If Msgbox ("Confermare codice ...  " & NuovoID, 33, "ATTENZIONE:") <> 1 Then Exit Sub
3) Grazie mille per la disponibilità alla spiegazione, le parti di codice che intendevo sono le seguenti
-Deduco serva a creare una sorta di "FocusTemporaneo" (simil...cella selezionata)

Codice: Seleziona tutto

Rem Trova UltimaRiga di dati nel FoglioAttivo
Cursore = FoglioAttivo.createCursor 
-Questo comando in pratica mi pare di capire che..trova la FineDiAreaUsata nel foglio attivo, a prescindere da colonne e righe..cioè a monte c'è proprio l'"intervallo" che definisce l'area usata, ma con questo comando gli possiamo dire noi se utilizzare come criterio a posteriori la riga o la colonna finale dell'intervallo dell'area usata?

Codice: Seleziona tutto

Cursore.gotoEndOfUsedArea(false)
-Quindi ora gli diciamo...Ok, trovato l'intervallo dell'area usata, definiti quali sono Colonna e Riga di FineAreaUsata prendi come "indirizzo" la RigaTermine e impostala come UltimaRiga giusto?

Codice: Seleziona tutto

UltimaRiga = Cursore.RangeAddress.EndRow  
-Infine, Questa parte la tradurrei come "se nel foglio c'è già almeno qualcosa di scritto (se il modello del prototipo è già stato inserito nel foglio), allora imposta l'UltimaRiga come UltimaRiga + Step incremento (quindi il Cursore ora sarà su UltimaRiga+StepIncremento)...Giusto?

Codice: Seleziona tutto

Rem Se UltimaRiga <> dalla Riga1 allora incrementa dello STEP desiderato
StepIncremento = 6 ' Da modificare secondo esigenza
 If UltimaRiga <> 0 Then '0=Riga1.... 
 UltimaRiga = UltimaRiga + StepIncremento
 End If 
*EDIT*Una cosa che mi preme è capire come dirgli di cercare proprio nel FoglioPrototipo il range di celle da Copiare, in quanto se aggiungo un foglio prima di FoglioPrototipo, la macro copia il range di celle da quel foglio e non più dal FoglioPrototipo, in pratica usa sempre il Foglio1

Codice: Seleziona tutto

Rem imposto le variabili Doc, FoglioPrototipo e FoglioAttivo.
Doc = ThisComponent
FoglioPrototipo = Doc.Sheets("Prototipo")
FoglioAttivo = ThisComponent.CurrentController.ActiveSheet
Rem Copia il range dal foglio prototipo
RangeDaCopiare = FoglioPrototipo.getCellRangeByName("A12:FO37").getRangeAddress()   'Range da modificare a piacere
Perdonate la prolissità del commento.
Grazie ancora
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da lucky63 »

.
Se chiudi o annulli la finestra di InputBox la variabile a cui era stata associata acquisisce valore “” (Stringa Nulla) quindi intercettabile per uscire.
Ho modificato il messaggio dell'InputBox aggiungendo suggerimento …. 0 = [Nessun codice]
Inserendo 0 (Zero) in InputBox e poi confermandolo il NuovoID verrà reimpostato in “” (Stringa Nulla) così che il modulo finale sarà senza ID .
-----
Le tue deduzioni riportate al punto "3)" sono corrette.
-----
Biagio91 ha scritto:se aggiungo un foglio prima di FoglioPrototipo, la macro copia il range di celle da quel foglio e non più dal FoglioPrototipo
Avevo dimenticato di usare “.GetByName”. Ora ho corretto e il foglio “Prototipo” potrà trovarsi in qualsiasi posizione dell'indice dei fogli disponibili.

Codice: Seleziona tutto

FoglioPrototipo = Doc.Sheets.GetByName("Prototipo")
.
Allegati
Test - CopiaAccodaModuloPrototipo.ods
(32.28 KiB) Scaricato 104 volte
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Copia Incolla, personaliz, salto righe, origine Foglio

Messaggio da Biagio91 »

Se chiudi o annulli la finestra di InputBox la variabile a cui era stata associata acquisisce valore “” (Stringa Nulla) quindi intercettabile per uscire.
Ho modificato il messaggio dell'InputBox aggiungendo suggerimento …. 0 = [Nessun codice]
Inserendo 0 (Zero) in InputBox e poi confermandolo il NuovoID verrà reimpostato in “” (Stringa Nulla) così che il modulo finale sarà senza ID .
:super: Funziona alla perfezione e Nobilita la possibilità di avere nulla di inserito se l'ID non è presente.
Le tue deduzioni riportate al punto "3)" sono corrette.
Ottimo grazie mille per il riscontro.

Grazie mille per il prezioso aiuto.

:super:
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: [Risolto] CopiaIncollaPersonaliz, SaltoRighe, OrigineFog

Messaggio da lucky63 »

Biagio91 ha scritto:Grazie mille per il prezioso aiuto.
Prego.
Spero che in futuro tu possa dare supporto ad altri utenti oltre che riceverlo.
.
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: [Risolto] CopiaIncollaPersonaliz, SaltoRighe, OrigineFog

Messaggio da Biagio91 »

Ben venga, se riesco a non fare danni, più che volentieri!!

Grazie per l'invito.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
Biagio91
Messaggi: 232
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: [Risolto] CopiaIncollaPersonaliz, SaltoRighe, OrigineFog

Messaggio da Biagio91 »

 Editato: L'argomento che seguiva è stato reso autonomo
https://forum-test.openoffice.org/it/fo ... e445bf1753 
Ultima modifica di Biagio91 il martedì 23 febbraio 2021, 14:15, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Rispondi