Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Userform filtra e cerca

Ultimo Aggiornamento: 19/10/2020 07:48
Post: 1
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
08/10/2020 11:57

Buongiorno,
mi chiamo Paolo, sono un impiegato della asl sto cercando di imparare ad usare excel con le userform e VBA, seguendo anche dei corsi online,praticamente assemblando codice trovati qua e la sono riuscito a fare l’inserimento dei dati sul foglio database tramite userform, ora sto cercando di fare lo stesso con la userform filtra e cerca, ho inserito una label per farmi restituire il risultato della ricerca in base ai campi compilati nel form, la chiave primaria della ricerca è: la data trasporto e la fascia oraria…. praticamente mi serve sapere impostando data e fascia oraria restituire il numero di record, ovviamente anche impostando gli altri filtri.. ma non saprei come iniziare, potreste darmi qualche spunto? Grazie Paolo
[Modificato da proma57 09/10/2020 10:00]
09/10/2020 10:22

Presumo che parli della colonna T = Data e della colonna W per l'orario.
Se inserisci due bottoni in Riga1 e abbini il codice sotto puoi filtrare direttamente sul foglio

Ps. Si potrebbe farlo in Userform2, però vedo diverse TextBox. Sarebbe meglio creare una nuova Userform, mà non capisco cosa Ti servirebbe
Option Explicit
Sub filtra()
Dim DData As Date, Or1 As Date, Or2 As Date, Ur, x, y
Sheets("DataBase").Activate
Ur = Range("A" & Rows.Count).End(xlUp).Row
DData = InputBox("Digitare una data valida, Ex 1/1/2000", , 0)
Or1 = InputBox("Digitare un'orario d'inizio, Ex 10:00", , 0)
Or2 = InputBox("Digitare un'orario finale, Ex 16:00", , 0)
Or2 = DateAdd("n", 1, Or2)
    ActiveSheet.Range("$A$2:$Z$" & Ur).AutoFilter Field:=25, Criteria1:=DData, Operator:=xlAnd
    ActiveSheet.Range("$A$2:$Z$" & Ur).AutoFilter Field:=23, Criteria1:=">=" & Or1, Operator:=xlAnd, Criteria2:="<" & Or2
End Sub
'''''''''''''''
Sub riapri()
Dim Ur
Sheets("DataBase").Activate
Ur = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("$A$2:$Z$" & Ur).AutoFilter Field:=23
    ActiveSheet.Range("$A$2:$Z$" & Ur).AutoFilter Field:=25
End Sub
[Modificato da ABCDEF@Excel 09/10/2020 10:24]
Post: 6.089
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
09/10/2020 12:09

Ciao, come dice EXCEL.. che saluto, sarebbe meglio filtrare sul foglio.

meglio ancora una tabella pivot

ma visto, che vuoi apprendere eccoti un esempio, non è finito fa soltanto la ricerca per data-ora e genere M/F.

ho preferito creare una nuova userform, la verità e che non mi trovo a mio agio quando mi cambiano i nomi degli oggetti, devo ricordare troppe cose come le ho chiamate.

invece mettendole in fila sequenziale so quale sia il combobox-x o il textbox-x basta contarli oltre ad avere alcuni comandi di pulizia globali.

ma anche per fare la trascrizione dei dati devo scrivere uno per uno tutti gli oggetti, invece faccio Copia/incolla e cambio solo il numero finale del Text o del Combo

come ho detto inserisci la data, poi scegli l'orario di inizio e fine ed infine inserisci il genere ed avrai i dati che corrispondono alla ricerca.

mi sono fermato li per un semplice motivo, non so quale siano per te le ricerche importanti da fare, non vorrei fare decine di ricerche e poi alla fine ne servono 3-4 o 5

anche il listbox non è completo cosa vuoi visualizzare? tutto oppure solo alcune colonne.

Fai sapere, Ciao By Sal 😀
[Modificato da by sal 09/10/2020 12:17]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
09/10/2020 16:46

Grazie….ho provato ambedue le soluzioni per capirne il comportamento….ma non riesco a farle funzionare non mi restituisce nessun valore… dove sbaglio?
Desidererei una label nel form tramite la proprietà caption il totale dei numero dei record a secondo del filtro impostato e che nella listbox la lista dei risultati dei soli titoli del form di ricerca.
per specificare meglio indico le colonne del foglio "DataBase" che interessano la ricerca:

ID = colonna A
Data Trasporto = collanna Y
Ora Trasporto = colonna W
Struttura Richiedente = colonna D
Età = colonna K
Sesso = colonna L
Covid Positivo = colonna R
Trasporto effettuato = colonna V
Codice Gravità = colonna T
Mezzo = colonna X
Ospedale Destinazione = colonna U

Spero di essermi spiegato, intanto vi ringrazio tantissimo per l'aiuto...😃😃
[Modificato da proma57 09/10/2020 20:38]
09/10/2020 23:42

A me funziona ??? Se scrivo 10/10/2020, dalle 10:00 alle 16:00 vedo riga5,6,13,17

A riguardo il VBA di By Sal, per le prime 4 celle da sinistra (vuota la 5°).
Presumo abbia sbagliato colonne e Textbox (combobox3)
If CDate(rng(x, 25)) = CDate(TextBox1) And CDate(rng(x, 23)) >= CDate(ComboBox1) And CDate(rng(x, 23)) <= CDate(ComboBox2) And _
rng(x, 4) = ComboBox3 Then

Come vedi più opzioni metti (che dovrai scrivere più celle e se lasci una cella vuota non farà nulla... Devo rivedere il *). Tempo fà ho scritto un VBA simile e devo ricercarlo, la cosa migliore sarebbe di fare ricerche "mirate". Intendo fare diverse userform e ad ognuna fargli un determinato tipo di ricerca. Vedi se puoi togliere qualche opzione.
Post: 2
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
10/10/2020 09:02

Grazie Excel.. ho capito perchè a me non ricercava, avevo impostato nel pc area geografica orario 8.00 anzichè 8:00 infatti mi cercava solo le celle con quel formato... per il filtraggio della ricerca non capisco cosa intendi, fare piu form x la ricerca? nel senso che tramite data e ora dovrei trovare tutti i record con il valore inserito ed poi fare altri form con data ora e uno o due filtri alla volta?

Nell'esempio di By Sal ho corretto il numero colonne ma quando premo il tasto ricerca continua a non darmi nulla, è come se non partisse la funzione Ricerca al clik...
10/10/2020 13:40

EX Per risparmiare un Opzione, si può eliminare una colonna trà:
Mezzo trasporto effettuato = colonna V ed ID Mezzo = colonna X

>>>non capisco cosa intendi, fare piu form x la ricerca?
Intendo dire che con una riga di VBA sopra, si ricerca il Giorno + DA + A
Se volessi cercare Giorno + Sesso, devo farne una seconda (puoi già farlo sul foglio)
Se volessi cercare Giorno + Età, devo farne una terza ecc (puoi già farlo sul foglio)

Adesso con 11 Opzioni sopra, dovrei crearne oltre un centinaio di combinazioni. Per Ex quelle sopra non sono uguali a Giorno + Covid e naturalmente quando cercherai solo il Giorno non è uguale.
Pertanto ci sarebbe da creare diverse userform (molto scomodo), ognuna con un determinato modo di ricerca che desideri fare. Oppure un ciclo per tutte le colonne (se riesco), mà quando avrai 2000/3000 righe diventerà lentissimo. Sto provando a fare un VBA più snello con dati fissi, mà sarebbe giusto che Tu eliminassi diverse Opzioni

Per finire il Tuo DataBase ha diverse magagne...
Colonna B, formatto celle =Data(10/10/2020)
Colnna C, Formatto celle =ORA(10:20)
Tutte le colonne con scritte varie devono essere uguali trà loro, non SÌ,SI,Si,NO,No. Devi usare la Convalida Dati, pure per Ospedali, Destinazioni ed altre voci

NB. Conosci il Filtro Avanzato (secondo me la soluzione migliore)
Metti a posto il "DataBase" che vedo cosa posso fare.


Post: 3
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
11/10/2020 10:15

Grazie mille Excel... si hai perfettamente ragione, mi sono reso conto che stavo iniziando con un livello avanzato per me... ho adottato il tuo consiglio ed anziche il form ho inserito nel foglio i due pulsanti che mi fanno la ricerca x data e ora, sopra in alto ho inserito un conta righe non vuote che mi restituisce i valori dei record cercati e poi agendo sugli altri filtri desiderati ottengo il risultato, infine dopo la ricerca con il pulsante ripristina filtri…
Sto cercando di capire il perché impostando l’intervallo delle ore funziona fino alle 23:58… partendo dalle ore 0:01 alle 23:59 non mi da niente, inveve se imposto dalla 0:01 alle 23:58 o inferiore mi fa vedere i record, ovviamente scartandomi quello delle 23:59….
Ho controllato la formattazione delle colonne indicate sia data che ora… per le altre colonne purtroppo le incoerenze sono dovute al fatto che dalla colonna A a S sono oggetto di importazione dati da altro file, oltre che per una seconda scheda di inserimento manuale tramite form che ha i controlli…
Forse sarebbe meglio anche una data di partenza e una di fine, come per l’ora, come potrei fare?
Grazie Paolo
12/10/2020 07:38

>>>dalla colonna A a S sono oggetto di importazione dati da altro file
Di sicuro B/C dall'userform, avrei bisogno di vedere il file Domande – Richiesta posto letto malattie infettive.xlsx senza dati sensibili.

Di norma, prima si crea il files e alla fine si scrive il VBA
In DataBase2 Ti faccio "notare alcuni" particolari.
In DataBase ho semplificato il Filtro, aggiunto riga1 e 2 nelle quali andrai a scrivere. Ex K1 =40 filtra solo i 40, se aggiungi K2 = 80) filtra da 40 a 80 (Riga2 sempre maggiore di Riga1, inoltre non serve premere Scopri). Idem per B, C, W, Y (controlla il tutto).
Le celle nere non le puoi usare, celle blu = Convalida e celle Verdi bisognerà metterci una convalida.
Adesso guardalo, studialo per alcuni giorni. Se devi modificarlo fallo adesso perchè un domani il VBA, se aggiungi/eliminini una colonna non funziona più.

Ps. L'userfom senza bottone cancella/modifica... Per caso non servirebbe 1° per ammissione, 2° per cure/medicine e una 3° per il trasporto? Non sò bene quali siano i Tuoi periodi e tempi d'uso.

Pps. Da oltre 3mg ad 50Kb
Post: 6.092
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
12/10/2020 08:26

Ciao forse imposti male la ricerca, premi sull'omino con la lente si apre il form



poi inserisci la data e scegli l'orario di inizio e fine ricerca e anche il genere "M/F" con "M", sono le uniche che al momento funzionano, poi premi sulla lente, questo il risultato



questo invece il risultato con "F"



gli ultimi 2 dati sono una ripetizione dell'ID non sapevo cosa visualizzare.

vedi che diminuendo l'orario scelto non visualizza i dati fuori dall'orario

Comunque ti avevo chiesto quali erano le priorità di ricerca, per non fare ricerche che non servono.

Ciao By Sal (8-D

[Modificato da by sal 12/10/2020 08:31]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
12/10/2020 09:35

proma57, 09/10/2020 16:46:

Grazie….ho provato ambedue le soluzioni per capirne il comportamento….ma non riesco a farle funzionare non mi restituisce nessun valore… dove sbaglio?
Desidererei una label nel form tramite la proprietà caption il totale dei numero dei record a secondo del filtro impostato e che nella listbox la lista dei risultati dei soli titoli del form di ricerca.
per specificare meglio indico le colonne del foglio "DataBase" che interessano la ricerca:

ID = colonna A
Data Trasporto = collanna Y
Ora Trasporto = colonna W
Struttura Richiedente = colonna D
Età = colonna K
Sesso = colonna L
Covid Positivo = colonna R
Trasporto effettuato = colonna V
Codice Gravità = colonna T
Mezzo = colonna X
Ospedale Destinazione = colonna U

Spero di essermi spiegato, intanto vi ringrazio tantissimo per l'aiuto...😃😃

ciao a tutti..
@bysal:
i criteri di ricerca sono che tramite una data ed una fascia oraria a secondo del o dei filtri elencati mi restituisce i record...
a me continua a non funzionre la lente mettendo la data , fascia oraria e sesso non si attiva... non riesco prooprio a capire perchè... capito sono invertite le date io facevo ricerca sul data trasporto...

@Excel:
credevo di essermi spiegato, la colonne da A ad S sono dati di importazione e purtroppo non filtrabili tranne struttura richiedente, sesso e covid positivo... poi le colonne dopo sono:
Data Trasporto = collanna Y
Ora Trasporto = colonna W
Trasporto effettuato = colonna V
Codice Gravità = colonna T
Mezzo = colonna X
Ospedale Destinazione = colonna U

ora provo a capire i suggerimenti... grazie

[Modificato da proma57 12/10/2020 09:47]
Post: 5
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
12/10/2020 10:42

allego alcune modifiche al form di by val per far meglio capire le specifiche ...
Post: 19
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
12/10/2020 20:26

Filtra e Cerca
Buonasera a tutti,

ho provato a risolvere il problema posto da Proma57 ricorrendo a VBA, utilizzando alcune funzioni da me sviluppate per la gestione di elenchi di dati, e allego il file seguente che pare funzioni bene.
Alcune modifiche apportate al DataBase:
- Eliminate dai nomi di colonna (campi) le accentate (mai nominare una colonna con accentate);
- Formattata la colonna "ORA TRASPORTO EFFETTUATO" come personalizzato "hh:mm", funziona meglio e vanno riscritti i valori, altrimenti vengono restituiti male;
-rinominata UserForm2 in FormFilter;
-eliminata la riga 1 del foglio DataBase:gli elenchi è preferibile che inizino sempre da riga 1 e colonna 1;
-la UserForm di filtraggio viene lanciata dal'immagine con la lente di ingrandimento....
Alcuni suggerimenti a Proma57:
Nominare le colonne con etichette concise e senza spazi tra le parole, diventa tutto più semplice in fase di programmazione.

Ho aggiunto la label per il conteggio delle righe estratte dal filtro.

Spero vada bene.

Saluti
Post: 6
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
12/10/2020 21:49

Grazie Dario,
sto cercando di capire il codice che hai scritto, per me troppo avanzato, cmq sembra funzionante cerco di studiarlo e ti faccio sapere...
Post: 20
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
12/10/2020 23:48

Ciao,
studiare il codice è sempre molto utile.
È il frutto di esperienza di anni, ma può essere migliorato. Dopo se ti serve posso schematizzare il funzionamento del codice, e illustrare la funzione di ogni macro utilizzata.
Saluti

Dario
Post: 7
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
13/10/2020 08:26

Ciao Dario,
sto cercando di capire le funzioni che hai scritto, ma fanno riferimenti a fogli che non vedo, mi rimane difficile seguirne la logica...
cmq provo a sistemarlo e vediamo che esce fuori.... e cosi che si impara giusto?
Grazie
p
Post: 6.093
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
13/10/2020 09:03

Ciao ecco il file, ho cambiato approccio, usando i filtri molto più versatili nel tuo caso, sono molte le voci di ricerca.

devo anche dirti alcune cose, le tue date nel database e gli orari non sono omogenei, cioè le date non sono date ma testo ed anche gli orari, quindi un controllo maggiore nell'inserimento dei dati altrimenti poi non si riescono a trovare i dati.

ho aggiunto 2 colonne per usare meglio i filtri sulle date e sugli orari i quali sono un poco ostici usarli con il VBA, comunque non inficiano il funzionamento del database, le formule arrivano fino alla riga 1000 nel caso allungale.

ci sono solo alcuni dati obbligatori, ma potrei anche toglierli, sono le celle gialle, la data fa riferimento alla colonna B se vuoi far riferimento a qualche altra data bisogna un poco cambiare.

al solito inserisci la data e la fascia oraria ed altri od eventuali parametri e premi la lente, ed avrai i risultati, ti ho inserito il contatore dei dati trovati

l'userform è anche un filtro continuo, esempio se nei risultati vedi che ci sono più gravità e vuoi solo le rosse nella combo Gravità scegli rosse e premi la lente la form si aggiorna con soltanto le rosse come per tutti gli altri elementi della ricerca.

non ti ho implementato una stampa perche non so se ti serviva e quale impostazione avrebbe dovuto avere.

Ciao By Sal (8-D
[Modificato da by sal 13/10/2020 09:04]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 21
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
13/10/2020 10:39

Filtra e Cerca
Buongiorno Proma57,

le macro che vedi dove si fa riferimento a fogli sono macro di prova, infatti si chiamano "Prova_xxxx", sono serviti a testare le funzioni.
Non devi usarle, o se intendi usarle devi modificare i nomi fogli e gli altri parametri.
Se diventi padrone del codice, puoi utilizzarlo per altre applicazioni dove hai necessità di filtrare dati da fogli excel.

Buon lavoro

Dario Nardella
13/10/2020 11:07

@By Sal
Come scritto in 09/10/2020 23:42, stai sbagliando le colonne di ricerca (sono la Data in Y e Ora in W). Poi l'utente ha richiesto pure di vedere le Date ex Dal 1/1/2020 Al 4/2/2020
Domanda nella Listbox (o qualcos'altro, tipo una maschera Access) come potrei visualizzare il risultato finale del filtro ?

L'allegato di darionardella rispecchia quasi tutto (vedo alcuni orari nella Listbox formatto errato). Codice molto complesso e difficile da rimetterci le mani.
[Modificato da ABCDEF@Excel 13/10/2020 11:30]
Post: 6.096
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
13/10/2020 11:23

Ciao Scusa e le celle senza le date in Y, come si visualizzano? o solamente i trasporti effettuati devono essere processati?

Ciao By Sal (8-D

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
13/10/2020 11:28

Che io sappia, non si devono vedere se metto la data.
Oppure lascio vuota la data e cerco tramite altri dati
[Modificato da ABCDEF@Excel 13/10/2020 11:31]
Post: 22
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
13/10/2020 12:27

Filtra e Cerca
@ABCDEF@EXCEL

Buongiorno,
hai ragione il formato orario riportato nel listbox del risultato in alcuni casi è errato, il problema è che i dati orari nella colonna del DataBase sono sbagliati, a volte sono orari e a volte testo puro.
La soluzione l'ho segnalata e consiste nel formattare l'intera colonna come "Personalizzato hh:mm" e poi riscrivere gli orari.
Posso predisporre una macro che lo fa in automatico.
E' sempre buona norma formattare le colonne di un Data Base, secondo il tipo di dati che contiene. Nel dubbio meglio il testo, mai Generale.
In alternativa, ma solo per questa applicazione, è possibile intervenire dopo l'estrazione delle righe valide del filtro, "manipolando" gli orari e formattandoli nel modo giusto.
Anche per la complessità del codice hai ragione, ma in compenso consente un filtraggio universale e preciso su qualsiasi foglio di dati, purchè organizzato in forma tabellare e che inizi dalla riga 1 e colonna 1. E' possibile però indicare la riga e la colonna della tabella.
Il cuore della procedura è la funzione FindKey, che restituisce i numeri di riga che soddisfano il filtro, in formato di stringa separata da virgola. Es: 1,5,7,10....
La funzione GetColumn restituisce i numeri di colonna indicati dal nome della colonna.
Infine la funzione ReadFieldValue legge le righe selezionate e restituisce solo le colonne volute.
Viene restituita una matrice a due dimensioni con le righe filtrate e le colonne che si vuole estrarre.
Vengono usate altre funzioni specializzate di supporto, tra le quali ConnectTable che riceve una stringa nomecartella|nomefoglio|riga|colonna e restituisce un oggetto Range della tabella, o GetRangeField che riceve un nome di colonna e restituisce un oggetto Range della colonna.
Io sarei onorato di poter illustrare meglio e nei dettagli il funzionamento di ogni singola funzione e del progetto in generale.
Ormai da anni (ho iniziato con excel nel 1992 e quasi immediatamente con ExlelMacro e poi con VBA) sviluppo applicativi di varia natura, che mi vengono richiesti da clienti e amici. Io sono un commercialista e nel mio lavoro utilizzo da tempo quasi esclusivamente i miei applicativi, dalla contabilità a tutte le necessità del mio lavoro.
Da tempo insegno l'uso di Excel avanzato e il VBA a chi me ne fa richiesta, e implemento applicativi per le aziende che sono interessate.
Saluti e buon lavoro a tutti

Dario Nardella
Post: 6.097
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
13/10/2020 12:36

Ciao Dario, non so se hai letto l'inizio della richiesta di Paolo, che sta cercando di apprendere un poco le basi del VBA, il tuo codice anche se validissimo per prospettive future, credo che sia troppo avanzato per chi è alle prime armi.

Ho spostato la ricerca alle colonne Y-W, ho anche cambiato mettendo la ricerca delle date con una Combo al posto della TextBox, per cui ho fatto prima una ricerca delle date del trasporto ordinato ed eliminato i doppioni, credo che potrebbe andare bene

Comunque ho lasciato i dati obbligatori da inserire.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
13/10/2020 18:05

@darionardella
Scusami, volevo farTi una domanda, secondo Te...
Files del 12/10/2020 07:38 ...... solo 50Kb
Dove tramite codice(Filtra_Righe da ricontrollare) seleziono le varie opzioni del Filtro direttamente sul foglio. Volevo sapere se posso spostare le scelte T1:Y2 in una userform e tramite tasto "filtra" visualizzare i record in una Listbox (non voglio compilare il tutto cella-per-cella se ci fossero 3000/5000 righe). Non sò se nell'userform posso visualizzare i Dati di un Matrice-volatile (qui forse ho scritto una cavolata)
Post: 8
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
13/10/2020 18:10

Ciao By Sal,

grazie per le modifiche, così è perfetto, cmq leggendo il codice incomincio a capire qualcosa.... mi sono reso conto che la ricerca è solo giornaliera e servirebbe una ricerca da data a data come per l'ora, poi se si deve fare una ricerca giornaliera si mette la stessa data ... messa cosi obbligatoria penso che poi quando ci saranno tantissime date diventa scomodo la tendina almeno per le date... altra cosa è possibile stampare il contenuto della list box? infine e possibile generare nella userform1 di inserimento nel campo ID generare un contatore automatico ID con prefisso M che parte da M1, questo per non andare in contrasto con gli ID dei dati importati che hanno solo numero intero?
Grazie
Paolo
14/10/2020 16:17

Io non riesco con l'userform, però l'ho fatto tramite filtro in data 12/10/2020 07:38 ...... solo 50Kb (forse non l'hai visto oppure non sai usarlo?)
A riguardo ID non ho capito cosa fare?
Post: 6.099
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
14/10/2020 17:58

Ciao, ti sto rifacendo anche la form per l'inserimento, non voglio mettere mano sulla tua in quanto hai cambiato nome ad i text e combo.

al momento non fa ancora la scrittura sul foglio dei nuovi dati ma potrebbe fare la modifica dei dati, non funziona ancora il tasto "Conferma"

ti ho messo il contatore sia per i nuovi inserimenti che per il trasporto, vedi che te li da all'apertura del form, ti da anche la data e l'orario, ma puoi anche scriverli manualmente.

scegliendo una vecchia registrazione ti riporta tutti i dati che puoi modificare a piacere e poi registrare quando funzionerà il tasto Conferma.

vedi che se clicchi su alcune celle passa da "SI" a "No" o viceversa nel caso servisse.

vedi se i dati ci sono tutti, per la verità avevo anche inserito la Targa nel caso servisse se non serve la tolgo, in quanto si dovrebbe anche inserire la colonna per la targa, che manca.

ho anche inserito nella ricerca la doppia data per la ricerca tra le date, la stessa data fa 1 giorno soltanto

se non inserisci niente per la ricerca ti fa vedere tutto l'archivio

per la stampa bastano solo le colonne del Listbox, se sono solo quelle ti preparo la macro per la stampa.

Fai sapere, ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 23
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
14/10/2020 18:35

Ciao BySal,

hai ragione, forse ho saltato troppi passaggi obbligatori, effettivamente il VBA va appreso gradualmente.
Però la soluzione cercata da Paolo è "complessa", se deve fare il suo dovere, e non ha una risposta semplice.
Ho visto che hai usato il Filtro di excel (AutoFilter) memorizzando i parametri nelle colonne 27 e 28. Ottima soluzione.
Semplice e "leggera".
Il problema è che ampliando i termini del filtro bisogna intervenire sul codice della funzione FiCop2, che ha già molti parametri.
Un suggerimento migliorativo è quello di usare il FiltroAvanzato (AdvancedFilter) gestito da codice.
E' più efficiente ma deve essere usato bene.
Il mio punto di vista è che bisognerebbe evitare di intervenire direttamente sui dati in tabella, per non correre rischi di modifiche non volute.
Il Filtro opera direttamente sulla tabella, seppure indolore, mentre il FiltroAvanzato può operare anche "in remoto" estraendo i dati del filtraggio su un foglio diverso, dove risiedono anche i parametri di filtraggio.
Ho una procedura già pronta per questo.
Rivisito il tutto utilizzando il FiltroAvanzato, e carico il file.
Grazie comunque delle osservazioni.
A presto.
Post: 24
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
14/10/2020 19:01

Filtra e Cerca
ABCDEF@excel, buona sera,

sicuramente è possibile trasferire in una form la scelta dei parametri, successivamente scritti al posto giusto nel foglio.
Ho visto che usi il Filtro (AutoFilter) e visualizzi direttamente nel foglio.
La ListBox può essere riempita direttamente da una matrice bidimensionale, che rappresenta righe e colonne.
l'istruzione da usare è:
nomelistbox.list=matrice

E' possibile caricare direttamente un intervallo di foglio (Range) in una matrice, e poi "scaricare" la matrice nella listbox.

esempio:
matrice=range(A1:M20)'carica la matrice con i dati dell'intervallo
listbox.list=matrice'scarica i dati nel listbox.

Allego un file di esempio.
Sono a tua disposizione.

Buon lavoro
Dario
Post: 9
Registrato il: 07/10/2020
Età: 67
Utente Junior
2013
OFFLINE
15/10/2020 08:50

Buongiorno a tutti,

intanto ringrazio per i consigli e soluzioni.... ho visionato tutti i vostri allegati, in particolare mi ha colpito quello di By Sal, veramente bello e si avvicina alle specifiche volute, che per altro non vi ho comunicato bene, ci provo....

praticamente ci sono 3 funzioni principali nel foglio DataBase, importazione - inserimento - filtra e cerca, il lavoro si svolge cosi:
nel foglio database vengono importati dati da altro file che interessano solo le colonne da A a S le altre colonne da T a Z le deve editare il medico in un secondo momento. Poi ci sono gli inserimenti manuali (che arrivano via fax) che interessano tutte le colonne e tramite form dovrebbe in automatico scrivere il campo ID colonna A con un prefisso M seguito in automatico dal numero che partirà da 1 quindi M1 ecc.. ( questo per distinguere dagli ID importati) infine il filtra e cerca che va benissimo quello di By Sal.... mancherebbe solo un qualcosa che mi stampa i risultati....

Ora provo a studiare i codici....

Ciao a tutti e Buona Giornata
Vota: 15MediaObject5,00245 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 21:11. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com