Pagina 1 di 1

[Risolto] Costruzione preventivo

Inviato: venerdì 12 luglio 2019, 14:59
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

Re: Costruzione preventivo

Inviato: venerdì 12 luglio 2019, 17:43
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.

Re: Costruzione preventivo

Inviato: venerdì 12 luglio 2019, 20:24
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

Re: Costruzione preventivo

Inviato: venerdì 12 luglio 2019, 20:42
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

Re: Costruzione preventivo

Inviato: venerdì 12 luglio 2019, 21:11
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

Re: Costruzione preventivo

Inviato: sabato 13 luglio 2019, 7:23
da patel
Prepara la prima maschera che si chiama Finestra di Dialogo, posta il file e ti facciamo un esempio di utilizzo

Re: Costruzione preventivo

Inviato: lunedì 15 luglio 2019, 10:15
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

Re: Costruzione preventivo

Inviato: martedì 16 luglio 2019, 10:05
da Thunder
Buongiorno

cercando nel forum ho trovato questo file che potrebbe, riadattandolo, soddisfare il mio caso per l'inserimento dei dati del paziente

Re: Costruzione preventivo

Inviato: mercoledì 17 luglio 2019, 11:28
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.

Re: Costruzione preventivo

Inviato: giovedì 18 luglio 2019, 8:57
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

Re: Costruzione preventivo

Inviato: giovedì 18 luglio 2019, 12:14
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

Re: Costruzione preventivo

Inviato: venerdì 19 luglio 2019, 16:23
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

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 9:23
da Thunder
Grazie mille

Fantastica!!!
Mi avete letto nel pensiero, provo ad assemblare il tutto.
A dopo
PS: Grazie veramente tanto a tutti

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 10:30
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

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 11:39
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

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 12:06
da Thunder
1) ho imparato anche questo non sapevo che si potesse usare questo opzione
2) come faccio non ne ho mai fatti?

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 13:33
da Gaetanopr
Basta cercare sul forum o studiare la guida di openoffice
https://wiki.openoffice.org/wiki/IT/Doc ... de/Dialogs

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 15:47
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

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 16:03
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.

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 16:39
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à

Re: Costruzione preventivo

Inviato: martedì 23 luglio 2019, 17:47
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