[Risolto] Costruzione preventivo

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

[Risolto] Costruzione preventivo

Messaggio da Thunder »

Buongiorno

sono a chiedervi un aiuto; mi sto cimentando con le macro ma dopo aver letto un bel po di post sul forum non ne vengo a capo.
Mi spiego:
dal file allegato vorrei utilizzare un dataform per inserire i dati della riga 6 del foglio dett_ocu per poi trascriverli nei campi corrispondenti del foglio prev_ocu poterli registrare e passare con il nuovo inserimento al record successivo.
Potete darmi una mano
grazie mille
Allegati
Prova.ods
(19.34 KiB) Scaricato 113 volte
Ultima modifica di Thunder il martedì 23 luglio 2019, 17:57, modificato 1 volta in totale.
Openoffice 3.2 su Windows 10
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Costruzione preventivo

Messaggio da Eramad »

Se ho capito bene cosa vuoi fare, ho iniziato a scriverti una macro funzionante.

Per farla funzionare devi inserire i dati in dett_ocu
La macro inserisce i dati in prev_ocu e stampa il foglio...uno per ogni paziente.

La macro ovviamente te l'ho lasciata mezza da finire così fai pratica.
E' semplice...basta che continui a scrivere i dati come le righe che ho già scritto.
Allegati
Prova [2].ods
(19.25 KiB) Scaricato 134 volte
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Ciao Eramad

in primis grazie infinite per la risposta.
Il mio obbiettivo è innanzitutto imparare ad utilizzare il linguaggio basic per riuscire, non dico a padroneggiare macro di alto livello ma almeno per riuscire a gestire qualche piccolo lavoretto.
Allora quello che hai fatto è interessante però io cerco un modo per inserire i dati tramite maschera per il foglio DETT_OCU partendo con l'inserimento del 2 paziente nella riga successiva per poi come hai fatto tu riportare i dati, del primo o del secondo oterzo e cosi via, nel preventivo effettivo del foglio prev_ocu.
Penso di aver inteso cosa hai scritto in macro ma quel i = 7 a cosa starebbe?
Grazie ancora
Openoffice 3.2 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Costruzione preventivo

Messaggio da patel »

Thunder ha scritto: dal file allegato vorrei utilizzare un dataform per inserire i dati della riga 6 del foglio dett_ocu per poi trascriverli nei campi corrispondenti del foglio prev_ocu poterli registrare e passare con il nuovo inserimento al record successivo.
non è molto chiaro
-------------------
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
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Ciao Patel

In pratica il preventivo viene compilato nel foglio dett_ocu, essendoci tante colonne in cui si dovranno inserire i dati per evitare casini vorrei farlo tramite maschera, fatto questo vorrei richiamerò nel modulo preventivo prev_ocu in modo da stamparli.
Devo necessariamente mantenere un storico in dett_ocu e la possibilità di richiamare e stampare il preventivo del paziente 1, 2 o 3.
Spero di essermi spiegato grazie mille
Openoffice 3.2 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Costruzione preventivo

Messaggio da patel »

Prepara la prima maschera che si chiama Finestra di Dialogo, posta il file e ti facciamo un esempio di utilizzo
-------------------
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
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Ciao Patel è qui che non so partire.
Non riesco a creare una userform dinamico per inserire i dati del foglio dett_ocu nel senso che le colonne potrebbero variare a seconda della specialità (in questo caso è oculistica successivamente ne vorrei costruire un altro chirurgico e così via ma utilizzando fogli diversi).
Una volta inseriti i dati del paziente vorrei passare alla riga successiva inserendo un nuovo paziente in un nuovo record. Questo per l'inserimento del paziente poi sul foglio prev_ocu vorrei fare quello che ha fatto Eramad ma avendo la possibilità di richiamare un paziente specifico
Grazie mille

PS in tutto questo colgo l'occasione per cercare di imparare questo fantastico mondo delle macro
Allegati
Prova 1.ods
(20.19 KiB) Scaricato 119 volte
Openoffice 3.2 su Windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Buongiorno

cercando nel forum ho trovato questo file che potrebbe, riadattandolo, soddisfare il mio caso per l'inserimento dei dati del paziente
Allegati
Arch Fert definitivo.ods
(23.4 KiB) Scaricato 120 volte
Openoffice 3.2 su Windows 10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Costruzione preventivo

Messaggio da lucky63 »

Usando LibreOffice e un massimo di 18 campi (voci intestazione colonna) potresti semplicemente ricorrere a:
Menu > Dati > Formulario
(..prima occorre però posizionarsi su una delle voci d'intestazione delle varie colonne…).
Così facendo si aprirebbe il relativo form di compilazione con le impostazioni predefinite.
01.png
Abbastanza semplice e pratico da gestire.

Nel tuo file hai però più di trenta “campi” (“Colonne”) di dati per ogni “record” (“Riga”).
La soluzione precedente quindi non sarebbe attuabile.
Visualizzare e gestire una trentina di voci in modo dinamico in "finestre di dialogo" (similmente al file: Arch Fert definitivo.ods) non sarebbe poi così semplice.

Un'alternativa più semplice potrebbe essere quella di dedicare alla procedura di inserimento dati uno specifico foglio in cui implementare una “Maschera personalizzata … dinamica” come nell'esempio che segue:
02.png
Selezioni il "Reparto" interessato (oculistica, cardiologia, …) e la maschera si autocompila con le voci d'intestazione presente nei rispettivi fogli in cui dovranno essere memorizzati i dati.
Viene preimpostato automaticamente numero di record.

Compili quanto serve … e se decidi di archiviare i dati inseriti verranno accodati nel rispettivo foglio d'interesse.
Allegati
Test - Maschera con voci variabili per la compilazione dei rispettivi archivi di dati.ods
(18.87 KiB) Scaricato 104 volte
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

WOW fantastico
Mi hai letto nel pensiero.
Per la parte dell'inserimento paziente è perfetto, adesso cerco di adattare il tutto alle mie esigenze (se riesco) in modo che ne approfitto per imparare qualcosina.
A tal proposito i valori + 80 e +64 nella formula =SE($B$3="";"";INDIRETTO("$" & $B$3 & "." & CODICE.CARATT(RIF.RIGA(A10)+64) & "6")) cosa indicano? Ho visto che alcune volte hai usato 64 e altre 80
Per quanto riguarda la compilazione del preventivo nel foglio prev_ocu è possibile fare l'opposto, nel senso che inserendo il reparto, il cognome del paziente si compilino i campi appositi del preventivo?
Ultima cosa per utilizzare Menu > Dati > Formulario senza passare dal formulario è possibile abilitarla direttamente al da pulsante macro?

Grazie infinite
Openoffice 3.2 su Windows 10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Costruzione preventivo

Messaggio da lucky63 »

Thunder ha scritto:i valori + 80 e +64 nella formula =SE($B$3="";"";INDIRETTO("$" & $B$3 & "." & CODICE.CARATT(RIF.RIGA(A10)+64) & "6")) cosa indicano? Ho visto che alcune volte hai usato 64 e altre 80
… spero di essere comprensibile …

La rappresentazione della voci d'inserimento nella “maschera/FoglioInserimenti” è “verticale”.
Le corrispondenti voci da acquisire dalla riga d'intestazione del foglio corrispondente sono “orrizzontali”.

La formula ricostruisce l'indirizzo della cella di corrispondenza di tale foglio (onde acquisirne il dato contenuto).

Le lettere dalla A alla Z sono ricavabili utilizzando a partire con CODICE.CARATT(65) per la lettera A e incrementando il numero progressivamente fino a 90 per la lettera Z.

In cella A5 della maschera utilizzato + 64 (che sommato al numero di riferimento riga di A1) da 65 (il codice carattere della lettera A)
Replicando A5 (copia/incolla/trascina) fino ad A20 il riferimento riga cambia incrementando automaticamente il codice carattere fino a 80 (il codice carattere della lettera P).

Nella cella E5 si dovrà ricavare il codice carattere 81 corrispondente alla lettera Q (alfabeticamente successiva alla lettera P) ecco quindi il numero 80 che sommato al riferimento riga di A1 da 81

Replicando E5 (copia/incolla/trascina) fino ad E14 il riferimento riga cambia incrementando automaticamente il codice carattere fino a 90 (il codice carattere della lettera Z)

Oltre la colonna Z le intestazioni di colonna assumono progressivamente AA AB AC AD AE AF …
Ecco il perché nella maschera inserimenti da cella E15 fino ad E20 la formula cambia il numero il 64 onde ripristinare l'automatismo per impostare il codice carattere corrispondente alla seconda delle due lettere della colonna di riferimento (mentre per la prima delle due che è uguale a A viene già fissata nella formula stessa con il concatenamento & ".A" &

Tutto questo per avere un certo automatismo nel recuperare il codice carattere di corrispondenza ma volendo si poteva inserire lo stesso manualmente a partire da 65 anzichè ricavarlo da CODICE.CARATT(RIF.RIGA(A1)+64) e così via per le altre celle.

Ogni formula di cui sopra porta come concatenamento finale & “6” che serve a far corrispondere poi il tutto al riferimento della riga 6 contenete le voci d'intestazione che vengono richiamate.
Thunder ha scritto:Per quanto riguarda la compilazione del preventivo nel foglio prev_ocu è possibile fare l'opposto, nel senso che inserendo il reparto, il cognome del paziente si compilino i campi appositi del preventivo?
Si può fare ma occorre considerare che potrebbero emergere casi di omonimia potenziale di Cognome, Cognome e Nome (data di nascita diversa quindi codici fiscali diversi) e anche di Cognome Nome CodiceFiscale (se il paziente si è rivolto più volte a quel reparto/struttura) mentre sarebbe univoco il numero di Record di registrazione nel foglio/reparto specificato …) ….
Sono attuabili soluzioni di filtraggio dati “a cascata” …. in maschera “preventivo” o in quella di “inserimento” o ancora usando i filtri direttamente nel foglio dati archiviati (oculistica, …) ove poi selezionare il record da richiamare in maschera preventivo ...
Thunder ha scritto: per utilizzare Menu > Dati > Formulario senza passare dal formulario è possibile abilitarla direttamente al da pulsante macro?
Se possibile non so come impostarne il codice.
Il registratore di macro integrato non registra la sequenza di apertura dei pochi passaggi necessari che sono:
- posizionare il cursore del mouse su una delle voci d'intestazione del foglio di archiviazione dati;
- Menu > Dati > Formulario
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Costruzione preventivo

Messaggio da Gaetanopr »

Thunder ha scritto: Per quanto riguarda la compilazione del preventivo nel foglio prev_ocu è possibile fare l'opposto, nel senso che inserendo il reparto, il cognome del paziente si compilino i campi appositi del preventivo?
Ho creato una macro che si aziona al variare della cella B6 del foglio prev_ocu, viene visualizzata una finestra di dialogo con l'elenco dei pazienti del reparto scelto, basta selezionarne uno e verrà compilato il preventivo, ho eliminato tutte le celle unite, le descrizioni vengono riportate nella colonna A e i dati nella colonna C.
Naturalmente puoi aggiungere tutti i reparti che vuoi, basta modificare l'elenco della cella B6

Saluti
Allegati
Test_finestra_dialogo_variabile_per_preventivo.ods
(26.72 KiB) Scaricato 87 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Grazie mille

Fantastica!!!
Mi avete letto nel pensiero, provo ad assemblare il tutto.
A dopo
PS: Grazie veramente tanto a tutti
Openoffice 3.2 su Windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Eccomi

ho rimpaginato un pò il tutto e vorrei chiedervi questo:
per la parte inserimenti, quella che ha fatto lucky63, penso di aver fatto tutto nel modo corretto anche se:
- la macro non registra l'ultima casella che compilo (non sempre)
- dato che ci sono degli importi che saranno sempre fissi (tipo quelli del foglio oculistica cataratta) avrei pensato di importarli nella maschera inserimenti utilizzando la stessa formula =SE($B$6="";"";INDIRETTO("$" & $B$6 & "." & CODICE.CARATT(RIF.RIGA(A1)+64) & "7")) cambiando la riga di importazione dati con la 7 in modo che al primo record imposto sempre PROVA PROVA per il recupero dei dati fissi.
Per quanto riguarda il preventivo parte fatta da Gaetanopr non riesco a capire alcune cose tipo:
- la prima è come faccia ad associare la macro alla cella nel caso del file allegato E4
- non capisco il passaggio quando definisci di copiare i dati nella colonna A e B.

Per il resto che dirvi complimenti ancora a tutti
Allegati
Prova.ods
(25.09 KiB) Scaricato 68 volte
Openoffice 3.2 su Windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Costruzione preventivo

Messaggio da Gaetanopr »

Thunder ha scritto: Per quanto riguarda il preventivo parte fatta da Gaetanopr non riesco a capire alcune cose tipo:
- la prima è come faccia ad associare la macro alla cella nel caso del file allegato E4
- non capisco il passaggio quando definisci di copiare i dati nella colonna A e B.
Ti mancano alcuni passaggi:
1) Associare la macro "Sub GridOnDialog(Target)" all'evento Contenuto modificato del foglio "Prev" facendo tasto dx del mouse sul foglio - Eventi foglio e fai l'associazioone della macro.
2) Non hai creato la finestra di dialogo (Dialog1) come ho fatto io nell'esempio che avevo allegato
3) questa è la parte che compila le colonne A e C

Codice: Seleziona tutto

For i = 1 To gridmodel.ColumnModel.ColumnCount - 1
   Foglio.getcellbyposition(0, rigades).String = gridmodel.ColumnModel.getColumn(i).Title & " :"
   If gridmodel.GridDataModel.getRowData(s)(i) <> "" Then
      'if IsNumeric(gridmodel.GridDataModel.getRowData(s)(i)  ) then msgbox gridmodel.GridDataModel.getRowData(s)(i) 
      Foglio.getcellbyposition(2, rigades).String = gridmodel.GridDataModel.getRowData(s)(i)  
   End If
   rigades = rigades + 1   
  Next i 
Se vuoi che i dati vengano riportati nella colonna B cambia l'indice di colonna 2 e metti 1 in questo modo

Codice: Seleziona tutto

Foglio.getcellbyposition(1, rigades).String
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

1) ho imparato anche questo non sapevo che si potesse usare questo opzione
2) come faccio non ne ho mai fatti?
Openoffice 3.2 su Windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Costruzione preventivo

Messaggio da Gaetanopr »

Basta cercare sul forum o studiare la guida di openoffice
https://wiki.openoffice.org/wiki/IT/Doc ... de/Dialogs
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

Sono riuscito ad inserire il dialog ma contrariamente a tuo non mi da la possibilità di scorrere i dati, sai darmi una dritta

Grazie mille
Allegati
Preventivi.ods
(21.19 KiB) Scaricato 62 volte
Openoffice 3.2 su Windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Costruzione preventivo

Messaggio da Gaetanopr »

Gaetanopr ha scritto:... ho eliminato tutte le celle unite, le descrizioni vengono riportate nella colonna A e i dati nella colonna C.
Io avevo eliminato le celle unite e tu invece le hai unite nuovamente, se vuoi scrivere nella colonna C quantomeno questa non devi unirla alle colonne A-B, nel file che riallego i dati li riporto nella colona D che non è unita.
La finestra di dialogo dopo averla creata puoi spostarla a piacimento e ingrandirla o meno, nel tuo caso và ingrandita in modo tale da visualizzare la barra di scorrimento.
Allegati
Preventivi.ods
(24.97 KiB) Scaricato 89 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Thunder
Messaggi: 26
Iscritto il: mercoledì 23 agosto 2017, 16:02

Re: Costruzione preventivo

Messaggio da Thunder »

vero scusa ma sto imparando.
Al momento devo assemblare per bene il tutto e per questa fase penso sia tutto.
Un'ultima cosa sto costruendo un file per la liquidazione correlata al preventivo; all'apertura del nuovo file liquidazioni vorrei importare automaticamente i dati dei fogli Oculistica cataratte, oculistica ricoveri e cosi via, ovviamente nei fogli corrispondenti, in modo che ad ogni nuova apertura si possa fare un aggiornamento automatico.
Come faccio a mettere il risolto?

PS grazie veramente a tutti per la collaborazione e la disponibilità
Allegati
Liquidazioni.ods
(7.7 KiB) Scaricato 84 volte
Openoffice 3.2 su Windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Costruzione preventivo

Messaggio da Gaetanopr »

Thunder ha scritto:Come faccio a mettere il risolto?
viewtopic.php?f=2&t=5661

Per il file liquidazioni sul forum trovi diverse discussioni che trattano l'argomento, devi cercare come effettuare una copia tra due documenti diversi, se non ci riesci apri un nuovo post.

Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi