› Excel e gli applicativi Microsoft Office › estrazione valori da cartella A su selezione in cella con convalida da elenco
-
AutoreArticoli
-
Salve,
vorrei inserire nella cartella "model" una parte della descrizione cliente nella cella verde (ad esempio "TTA' DI RO" in modo che venga proposto un elenco di nomi che contengono quella stringa ( nomi che fanno parte delle celle della colonna "descrizione cliente" della cartella "riepilogo" ) . Nello specifico dovrebbe aprirsi un elenco contenente ROMA e ROTTERDAM . Dopo aver selezionato uno dei valori, ad esempio ROTTERDAM, dovrebbe apparire il relativo CODICE CLIENTE e selezionando la cella BENEFICIARI dovrebbe aprirsi un elenco contenente le voci "DIPENDENTI" , "INSEGNANTI" e "INFERMIERI". Selezionando INSEGNANTI, la cella DETTAGLIO dovrebbe mostrare l'unico valore possibile ( perché solo una riga del riepilogo soddisfa quella condizione ) e cioè COMPENSI E SCRUTINI . Allo stesso modo in automatico dovrebbero riempirsi anche le celle Data pagamento, Tipi di pagamento e Metodi di pagamento.
Saluti
Roberto
Allegati:
You must be logged in to view attached files.A parte gli errori sui collegamenti mancanti e a parte che =ListaVariabile ritorna un errore per cui non è agevole ricostruire lo scenario di partenza, per quel che mi ricordo mi sembra che in una cella normale con una convalida non è possibile inserire una stringa parziale per farsi tornare in riepilogo tutte le corrispondenze di un elenco tra cui scegliere quella desiderata.
Non so se nelle versioni più recenti di Excel la situazione è cambiata (che Excel utilizzi?).
L'escamotage classico è intercettare un doppio clic nella cella desiderata e far comparire (sovrapposto alla cella) un controllo ListBox riempito con l'elenco. Il controllo ListBox permette infatti, digitando le prime lettere, un filtro nell'elenco. Una volta compiuta la scelta il controllo ListBox viene nascosto e il dato compare in cella.
Per la seconda parte della questione, una volta scelta una voce in model, si va a cercare le corrispondenze di beneficiari in riepilogo, e in funzione di quello la corrispondente voce di dettaglio. Qui invece che formule vedrei meglio qualche riga di codice che punti al database magari aprendolo direttamente con ADO 🙂
Nulla di impossibile ma bisogna lavorarci un po' su.
Potrei consigliarti a questo punto (codice per codice) perfino uno Userform, il che risolverebbe agevolmente un bel po' di problemi di gestione, soprattutto la questione del filtraggio in casella di riepilogo.
Ti ringrazio per il momento. Devo confessare di non aver ripulito bene il file, è sicuramente rimasto il foglio di lavoro denominato " Foglio formule " dove ho cercato di risolvere la questione della creazione dell'elenco in base alla digitazione parziale della descrizione cliente ( nella colonna sotto la cella " Elenco suggeritore " venivano mostrati i valori che contenevano la stringa parziale e questi venivano mostrati nell'elenco del primo foglio; c'era ancora però qualcosa da sistemare perché in certi casi non veniva mostrato l' ultimo valore ) . Se avessi la pazienza di aiutarmi, anche tramite qualche riga di codice, mi risolveresti un bel problema.
Saluti
Roberto
Avendo un po' di tempo si riesce a fare tutto.
La domanda successiva è: come te la cavi con VBA? nel senso che noi possiamo abbozzarti un modello funzionante ma per le successive modifiche, correzioni, integrazioni, eventuali aggiustamenti e aggiunte di funzionalità (in uno: per la successiva manutenzione), dovrai cercare di venirne fuori da solo, naturalmente con l'ampio supporto che questa comunità offre da sempre 🙂
Ho già scritto , prendendo spunto da tracce esistenti e poi manutenuto , programmi in VBA per cui credo sarebbe sufficiente un " semilavorato " che poi provvederei ad affinare .
Benissimo allora non resta che cominciare a ragionare. Dicci come vuoi procedere.
Parti tu col preparare un form di partenza con i campi da compilare? alleghi un file simile allo scenario ma senza collegamenti? Cerchiamo di andare avanti con quello che hai già postato?
Possiamo partire da quello che ho già postato, il file "model" che contenga solo il primo dei due fogli, quello che si chiama "Inserire beneficiari" e l'altro file, "riepilogo".
Grazie e saluti
Roberto
Il "riepilogo" è a sola lettura? cioè si pescano dati ma non vi si scrivono?
Nel "model", poichè non ci sono i collegamenti validi, trovo tutto vuoto (le formule non funzionano), che valori devono esserci nelle varie colonne calde, cioè A, C, E, F?
Che significato ha la colonna I delle formule usate?
p.s. inserendo valori a mano in colonna B (visto che senza collegamenti attivi è tutto zero), ho constatato che le colonne E e F si riempiono di conseguenza, e l'elenco o distinta pesca alcuni valori della convalida dati. Non ho capito bene la logica delle formule, ma credo di aver afferrato il senso del tutto 🙂
Nella colonna " Stato " del riepilogo vorrei poter scrivere diversi stati della lavorazione , magari copiandoci di volta in volta che un utente lavora nel foglio " model " la sua casella aggiornata " Note " tra un elenco di valori da convalida .
Non far caso ai nomi rimasti presenti in Gestione Nomi, facevano parte dei tentativi che avevo fatto e non è detto che servano ancora .
Eccomi qui con una piccola proposta, tanto per cominciare.
Posiziona model_VF e riepilogo nella stessa cartella e avvia model_VF.
Pigia il pulsante "show form" e vediamo cosa succede.
Non succederà molto in verità, però serve a capire il meccanismo. I dati recuperati non sono tanti (solo il codice città e per giunta solo il primo) e poi bisogna magari condizionare le scelte successive alla scelta della listbox ma intanto vediamo se sono riuscito a rispettare la tua esigenza.
Allegati:
You must be logged in to view attached files.Mi ha intrigato, la scelta di VF con il collegamento "ADODB.Connection",perchè?ma perchè non apro e chiudo il file dove debbo leggere i dati da importare.
Mi sono documentato un po su SQL , Query che di si volglia, e ho apportato una piccola modifica al file postato da VF.
pero vorrei capire queste righe di codice:.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"DBQ=" & s & "; ReadOnly=False;"
.Open
If IsNull(rs(0))
perchè rs(0)
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Oh LOL ma certo, e sempre ADO è 🙂
rs(0) è semplicemente l'unico campo restituito (si parte da zero come con gli indici di un array)
Buongiorno vecchio frac,
ho provato a fare quanto da te suggerito, inserendo il foglio "riepilogo" insieme al foglio "Inserire beneficiari" ed ho cliccato sul bottone "Show form" . Viene fuori un Errore di run-time: Microsoft Driver ODBC Errore generale. Impossibile aprire la chiave Temporary(volatile) Ace DSN for process 0x1d58..... Cosa intendevi dicendo di avviare model_VF ?
Scusami, avevo capito un'altra cosa ( è lunedì mattina per tutti...). Ho fatto quello che mi hai detto ed ho cliccato sul bottone. Si apre una finestra con le quattro città. Io vorrei che questo accadesse sulla digitazione(anche parziale) dei caratteri nella cella con sfondo verde. Poi una volta selezionata la città dovrebbero aprirsi in sequenza le altre tendine per la scelta dei beneficiari, del dettaglio ecc ecc....
rs4464 wrote:vorrei che questo accadesse sulla digitazione(anche parziale) dei caratteri nella cella con sfondo verde
Questo lo avevo ben capito, ma siccome non si può fare avevo pensato a inserire i dati mediante una userform, il controllo ListBox permette la digitazione parziale per il recupero del dato (nel mio codice probabilmente c'è ancora un riferimento a Label2, una label di test, che va tolto altrimenti si genera un errore).
Per la verità la prima parte, avere l'elenco di quelle occorrenze che soddisfano la digitazione parziale nella cella verde, l' avevo ottenuto ( non era preciso, probabilmente era da affinare....). Prova a controllare il file che ti allego. Era la parte successiva, avere gli elenchi dei beneficiari o del dettaglio con i valori relativi alla città selezionata, la cosa che non mi era riuscita...
Allegati:
You must be logged in to view attached files.rs4464 wrote:avere l'elenco di quelle occorrenze che soddisfano la digitazione parziale nella cella verde, l' avevo ottenuto
Uff non ci riesco, non riesco a verificare questa cosa.
Fermo restando che ho gli errori dei collegamenti non trovati.
E' la colonna B del foglio formule la chiave ma anche se al posto delle formulacce inserisco dei valori, e vedo il filtro nelle colonne adiacenti, poi nella famosa cella verde non ottengo le corrispondenze volute in caso di digitazione parziale. Sto sbagliando qualcosa e non so cosa 🙁
Per la prima parte avevo usato questo come esempio : https://www.youtube.com/watch?v=oLxElItdMZE
In realtà a volte funziona ( anche se non correttamente, mi sembra che non tenga conto dell'ultimo valore da proporre nell'elenco ) mentre a volte vengono fuori errori di riferimento circolare . . .
Nel file che ti allego ho inserito una combobox,che potrebbe essere messa nella cella Verde, quando attivi il foglio"Beneficiari" la combobox aggiunge i valori , se tu digiti nella combobox , ti seleziona gli item che cominciano per quello che inserisci, se ho capito.
ti allego file
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.La Combobox dovrebbe essere in grado di mostrare un elenco con i valori (select distinct) che contengono, in qualsiasi posizione della stringa, inizio, fine o in posizione intermedia, quello che si sta digitando nella cella verde. Quindi, se scrivo "citt" l'elenco dovrà contenere tutte e quattro le città mostrate una sola volta. Se scrivo "am" l'elenco dovrà contenere le sole due città di Amsterdam e Rotterdam. Dopo averne selezionata e confermata una e solo una nella Combobox, ad esempio Amsterdam, cliccando nella cella Beneficiari dovrebbe aprirsi un ulteriore elenco a tendina con le voci "Netturbini" "Infermieri" e "Calciatori". Una volta scelta la tipologia di beneficiari "Infermieri", cliccando nella cella Dettaglio dovrebbe comparire solo la stringa "Borse di studio"....e così via. Non è semplice ma spero di essere stato un po' più chiaro....
Allegati:
You must be logged in to view attached files.rs4464 wrote:Se scrivo "am" l'elenco dovrà contenere le sole due città di Amsterdam e Rotterdam
No,perche la combobox cerca tutte le parole che iniziano con"am" non tutte le parole che contengono"am"
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )albatros54 wrote: ho inserito una combobox
Questo era l'escamotage di cui parlavo all'inizio ed è una buona idea.
Mi sembrava di semplificare proponendo uno userform in cui pilotare le scelte di diverse caselle di riepilogo dipendenti le ultime dalle precedenti, sia per avere tutto sott'occhio che per non costringere l'utente a posizionarsi in celle diverse per operare la propria scelta.
vecchio frac wrote:Questo era l'escamotage di cui parlavo all'inizio ed è una buona idea.
nel post#6888 avevo proposto la tua scelta avendo con la userform, che doveva essere implementata,tutto sotto controllo, ma si vede che a rs4464 non piace
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire ) -
AutoreArticoli