Condividi:        

Userform di ricerca a 6 fattori

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Userform di ricerca a 6 fattori

Postdi systemcrack » 04/10/24 09:53

Ciao a tutti,
è da qualche giorno che sto lavorando ad una "userform di ricerca" che vorrei aggiungere allo schema che utilizzo in ufficio per l'entrata dei mezzi nel magazzino.

Al momento è già presente una sorta di ricerca, ma è più grezza, con meno funzionalità e fissa in una parte non visibile della schermata se non si scorre lo scroll orizzontale.. quindi pressochè inutilizzata e che ottengo tramite la funzione:

=CONTA.PIÙ.SE(F2:F201;AC39; C2:C201;AC41; H2:H201;AC43)

Immagine

Per cercare di rendere più "user friendly" la funzione ho deciso appunto di utilizzare una userform che si apre con un pulsante fissato nella prima riga che scorre con lo scroll della pagina e che utilizzo come barra d'intestazione.

Immagine

1 Primo fattore di ricerca CLIENTE = TextBox1 va confrontato con il range di celle F2:F201 nel foglio ENTRATE
2 Secondo fattore.. VETTORE = TextBox2 va confrontato con il range di celle C2:C201 nel foglio ENTRATE
3 Terzo fattore.. MERCE = TextBox3 va confrontato con il range di celle H2:H201 nel foglio ENTRATE
4 Quarto fattore.. NOTE = TextBox4 va confrontato con il range di celle N2:N201 nel foglio ENTRATE
5 Quinto fattore.. TARGA = TextBox5 va confrontato con il range di celle B2:B201 nel foglio ENTRATE
6 Sesto fattore.. TARGA = TextBox7 va confrontato con il range di celle P2:P201 nel foglio ENTRATE
7 Risultato conteggio ricerca = TextBox6

8 Evidenzia le righe in cui si realizzano le condizioni = CommandButton1
9 Rimuovi Evidenzia = CommandButton2
13 Numera le righe in cui si realizzano le condizioni = CommandButton3
14 Rimuovi la numerazione = CommandButton4

10 Selezione verde per l'evidenziazione = CheckBox1
11 Selezione arancione per l'evidenziazione = CheckBox2
12 Selezione azzurro per l'evidenziazione = CheckBox3
15 Font rosso per la numerazione = CheckBox4
16 Font blu per la numerazione = CheckBox5
17 Font nero per la numerazione = CheckBox6

-Vorrei che la ricerca restituisca un risultato (punto 7): sia se inserito un unico fattore sia se inseriti tutti e sei.

-Vorrei che cliccando il pulsante EVIDENZIA venissero evidenziate tutte le righe risultanti dall'intersezione dei valori
(a seconda che il flag sia su verde, arancio, azzurro evidenzierà nel rispettivo colore).

-Vorrei che cliccando su NUMERA venisse aggiunto un conteggio in colonna E (range E2:E201) per tutte le righe che soddisfano le intersezioni dei dati. (a seconda che il flag sia su rosso, blu, nero evidenzierà nel rispettivo colore)

Ovviamente per entrambi ho predisposto un "controbottone" (nr. 9 E 14) che azzera le modifiche applicate.

Qui il file con tutti i progressi (solo grafici) fatti sino ad ora. Mi date qualche dritta per partire con questo nuovo sviluppo per favore.

Al momento sto leggendo questo ma non so se sono sulla strada giusta.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Sponsor
 

Re: Userform di ricerca a 6 fattori

Postdi systemcrack » 04/10/24 13:12

Seguendo la guida, linkata nel precedente post, per il confronto con più criteri, sono giunto a questo punto:

Puntando al codice del campo 7 ho iniziato così a comporre il codice
Codice: Seleziona tutto
Private Sub TextBox6_Change()
   Dim rngCriteria1 As Range
   Dim rngCriteria2 As Range
   Dim rngCriteria3 As Range
   Dim rngCriteria4 As Range
   Dim rngCriteria5 As Range
   Dim rngCriteria6 As Range
   
'assign the range of cells
   Set rngCriteria1 = Range("F2:F201")
   Set rngCriteria2 = Range("C2:C201")
   Set rngCriteria3 = Range("H2:H201")
   Set rngCriteria4 = Range("N2:N201")
   Set rngCriteria5 = Range("B2:B201")
   Set rngCriteria6 = Range("P2:P201")
   
'use the ranges in the formula
'???? ==>>> QUI NON SO COME COPORRE LA FORMULA
 '  Range("F10") = WorksheetFunction.CountIfs(rngCriteria1, ">6", rngCriteria2, ">5")
'<<<==  ????

'release the range objects
   Set rngCriteria1 = Nothing
   Set rngCriteria2 = Nothing
   Set rngCriteria3 = Nothing
   Set rngCriteria4 = Nothing
   Set rngCriteria5 = Nothing
   Set rngCriteria6 = Nothing
End Sub

Ora..! Il primo intoppo nasce su come comporre la formula di modo che il conteggio funzioni sia se si inserisce un solo criterio sia che siano molteplici.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Userform di ricerca a 6 fattori

Postdi Anthony47 » 05/10/24 12:20

Se vuoi "evidenziare" e "numerare" le righe che rispettano i criteri allora non puoi lavorare con una formula (si potrebbe pensare a una formattazione condizionale ma il rischio e' che diventi troppo pesante)
Quanto alla "numerazione", intendi che la colonna E e' normalmente vuota e va compilata con una numerazione progressiva nelle righe che rispettano i criteri?
Infine, volendo dare del codice utilizzabile e non solo suggerimenti, sarebbe utile se puoi condividere un file contenente dati dimostrativi e anche la userform; oppure (almeno) esportare la userform e poi condividere i file .FRM e .FRX creati dall'esportazione
Avatar utente
Anthony47
Moderatore
 
Post: 19435
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Userform di ricerca a 6 fattori

Postdi systemcrack » 05/10/24 16:54

Ciao Anthony BUON SABATO!
Ti allego qualche screen per rendere meglio l'idea di ciò che intendo e dove trovare la userform nello schema:

Come aprire la userform nello schema ---------- Come si presenta all'apertura
----------Immagine---------------- Immagine

Esempio di dati inseriti
Immagine

Anthony47 ha scritto:Se vuoi "evidenziare" e "numerare" le righe che rispettano i criteri allora non puoi lavorare con una formula (si potrebbe pensare a una formattazione condizionale ma il rischio e' che diventi troppo pesante)

mmm.. peccato perchè sarebbe stato bello entrambe le possibilità.. forse tra la numerazione e l'evidenziazione preferirei l'evidenziazione delle righe se fosse possibile.

Anthony47 ha scritto:Quanto alla "numerazione", intendi che la colonna E e' normalmente vuota e va compilata con una numerazione progressiva nelle righe che rispettano i criteri?

Si esattamente quello che intendevo.

Anthony47 ha scritto:Infine, volendo dare del codice utilizzabile e non solo suggerimenti, sarebbe utile se puoi condividere un file contenente dati dimostrativi e anche la userform; oppure (almeno) esportare la userform e poi condividere i file .FRM e .FRX creati dall'esportazione

Se guardi bene nel mio precedente post ho anche linkato il file "incriminato" e che ti ripropongo QUI DI SEGUITO ;)
C'è già inserita la userform che si apre con pulsante che trovi in riga 1.
Sicuramente all'apertura ti darà errore perchè è collegato ad altri file e cartelle specifiche.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Userform di ricerca a 6 fattori

Postdi Anthony47 » 06/10/24 23:11

Scarica questi due file:
https://www.dropbox.com/scl/fi/aeeiecdl ... pslk3&dl=0
https://www.dropbox.com/scl/fi/kixyseod ... g7pdu&dl=0

Poi, in una copia del tuo file, rimuovi la tua Userform1 e, dal vba, esegui Menu /File /Importa file; seleziona il file SC_UserForm1.frm e completa con Apri.
Ti verrà importata nel tuo file una form molto simile alla tua, completa delle sue macro di controllo.

Per completezza, devi inserire in testa a un Modulo standard (io ho usato Modulo1) questa riga:
Codice: Seleziona tutto
Public rOk As Range, cnArr()

Ricorda: in testa a un modulo standard, prima di qualsiasi Sub o Function

Noterai:
1) ho aggiunto un pulsante CALCOLA
2) ho sostituito i checkbox con 2 set di OptionBox (che sono mutuamente esclusivi)
3) i textbox di input si chiamano rigorosamente TextBox1, Textbox2, ..., Textbox6 e nel codice si trova una riga TBxInd = Array(6, 3, 8, 14, 2, 16) che, per ognuno di questi textbox (in ordine), descrive in quale colonna il valore va ricercato (ovviamente 6=F, 3=C etc).
Puoi inserire quanti textbox vuoi, purche' si chiamino TextBoxNN e purche' esistano nella riga TbxInd= etc etc lo stesso numero di valori
Il Textbox usato per l'output, dovendo evitare il nome TextBoxN, si chiama TBOut

Non mi sono preoccupato degli aspetti "cosmetici" della userform: allineamento, dimensioni, coerenza tra dimensione dei textboxes e dimensione dei caratteri e altro; lascio a te trovare il tempo e la pazienza necessaria

Potrebbe inoltre essere utile aggiungere un pulsante CHIUDI, nella cui macro di Click inserisci l'istruzione
Codice: Seleziona tutto
Unload Userform1


Prova a compilare i textbox di filtro ed eseguire CALCOLA
Dopo il Calcola puoi evidenziare e numerare e relative annulla.
Puoi impostare il colore, che verra' applicato alla prossima evidenza o numerazione
Un nuovo Calcola cancella evidenziazione e numerazione

Comincia con vedere come si comporta, poi se hai bisogno di chiarimenti o fare modifiche vedremo
Avatar utente
Anthony47
Moderatore
 
Post: 19435
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Userform di ricerca a 6 fattori

Postdi systemcrack » 07/10/24 16:58

Fantastico Anthony! Grazie!
Mi prendo qualche giorno per testarlo e per capire come hai costruito il tutto e ti do conferma.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Userform di ricerca a 6 fattori

Postdi systemcrack » 10/10/24 16:43

Sebbene non abbia ancora avuto il tempo di studiare il codice, la userform sembra reagire e fare il suo lavoro in modo egregio.
Grazie davvero tanto Anthony senza di te non ce l'avrei mai fatta.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40


Torna a Applicazioni Office Windows


Topic correlati a "Userform di ricerca a 6 fattori":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti