› Excel e gli applicativi Microsoft Office › estrazione valori da cartella A su selezione in cella con convalida da elenco
-
AutoreArticoli
-
Nuova revisione. Adesso nell'userform iniziale puoi scegliere lo stato lavorazione. Le medesime voci della lavorazione si trovano anche nel file modello che mediante convalida dati pesca le informazioni dalla cella AA1.
Riallego i tre file:
- il modello (con l'elenco dinamico in AA1 per gli stati delle lavorazioni. Se li cambi devi allineare anche il codice del file successivo, trovi tutto nell'evento Initialize dell'Userform)
- il file con la macro
- il file scadenzario. Attenzione! per funzionare correttamente la colonna STATO LAVORAZIONE deve avere formato generale e non Data altrimenti salta tutto 🙂
Â
Allegati:
You must be logged in to view attached files.Ciao VF, ho provato ad inserire una seconda tipologia di beneficiari per un file codice ente già creato ma non si genera il foglio di lavoro e il codice va in errore. Con l'occasione ti chiedo anche se, volendo variare ed aumentare il numero di stati lavorazione sia sufficiente allargare l'elenco di convalida o si debba ricreare nella Gestione nomi un intervallo più ampio .
Ti ringrazio come sempre per la pazienza e la disponibilitÃ
rs4464 wrote:sufficiente allargare l'elenco di convalida
Sì, devi soltanto aggiungere nomi all'elenco perchè ho creato una convalida dati dinamica, quindi l'elenco chiamato "=stato" si aggiusta in funzione delle voci presenti nell'elenco. Ripeto che se modifichi tali voci devi allineare in conformità anche il contenuto dell'array nel codice dello userform.
In merito all'altro problema
rs4464 wrote:per un file codice ente già creato ma non si genera il foglio di lavoro e il codice va in errore.
farò una verifica (che errore ricevi?). Dovrebbe aprirsi il file già creato e aggiungersi un foglio nuovo rinominato come il beneficiario. Questa sarebbe la logica. Ammetto che non ho fatto molti test 🙂
L'errore è sulla seguente riga di codice che non riesce ad essere eseguita :
wb.Sheets("Inserire beneficiari (2)").Delete
In realtà non esiste ancora un foglio con questo nome da cancellare .
Un dettaglio che forse sarebbe , se fattibile , il caso di modificare è il seguente : selezionando un cliente esistente , far apparire solo le tipologie di beneficiari appartenenti a lui e non , come nel caso di Nuovo Cliente , l' elenco completo dello scadenzario . Che ne pensi ?
rs4464 wrote:non esiste ancora un foglio
O meglio, esisteva però è stato rinominato quindi non esiste più 🙂 ok, vedrò di aggiustare questa cosa.
rs4464 wrote:selezionando un cliente esistente , far apparire solo le tipologie di beneficiari appartenenti a lui
ritengo che sia logico pretendere questo. Devo andare a guardare come si comporta il codice in questo caso. Spero di metterci mano entro stasera 🙂
Ecco, allego la revisione 5 del file, da provare. Credo di aver sistemato le osservazioni fatte Â
Allegati:
You must be logged in to view attached files.Buongiorno, ho provato la nuova revisione, questi i risultati:
- aprendo il nuovo cliente va in errore run-time 5 " Chiamata di routine o argomento non validi "sulla riga di codice " Load UserForm1 "
-aprendo il Cliente esistente, dopo aver scelto il file da lavorare, nella finestra della Userform2 dove dovrei scelgo i beneficiari da lavorare, il codice tenta comunque la creazione del file con lo stesso nome anziché salvare la modifica ( accade anche nel caso in cui si inserisca nel file una nuova tipologia di beneficiari invece che, come dovrebbe, creare solo un nuovo foglio all'interno del file ) .
rs4464 wrote:aprendo il nuovo cliente va in errore run-time 5
Pare strano ma è bastato anticipare un'istruzione.
Private Sub CommandButton2_Click() 'nuovo cliente isNew = True Set wb = Workbooks.Add(ThisWorkbook.Path & "\model.xlsx") With UserForm1 .ComboBox1 = "NUOVO" .Show End With End Sub
Â
rs4464 wrote:il codice tenta comunque la creazione del file con lo stesso nome
Questo devo verificarlo meglio.
E' un parto difficile 🙂
Ho fatto le modifiche e ho fatto dei test con le opzioni possibili. Allego la nuova versione. Prosegui pure con i test 🙂
Â
Allegati:
You must be logged in to view attached files.Buongiorno, scusami per il ritardo nella risposta ma mi ero perso la tua ultima nuova versione. Ho provato e questi sono i risultati:
- sulla lavorazione di un Nuovo cliente il codice si ferma sulla riga " cn.Execute s " dopo aver cliccato sul bottone " Inserisci i dati "
- sulla lavorazione di un Cliente esistente su una tipologia non ancora inserita  il codice si ferma sulla stessa riga " cn.Execute s " dopo aver cliccato sul bottone " Inserisci i dati "
- sulla lavorazione di un Cliente esistente in aggiornamento stato lavorazione di una tipologia già inserita il comportamento è lo stesso ed  il codice si ferma sempre sulla stessa riga " cn.Execute s " dopo aver cliccato sul bottone " Inserisci i dati " .
Saluti
Â
Roberto Simoncini
Molto strano e inquietante, perchè a me non succede.
Rifaccio le verifiche e poi studiamo l'ambiente di test che magari non coincide più.
Continuo a non riscontrare gli errori che incontri...
Tu dici che il codice si ferma sulla riga " cn.Execute s " ma io vorrei sapere se ottieni anche qualche messaggio o codice di errore.
In compenso, controllando il progetto, mi sono accorto (e ho sistemato) alcuni problemi in fase di creazione dei nuovi fogli.
Allego la nuova versione 7 e riallego i file necessari al funzionamento (tutti e tre devono stare nella stessa cartella).
Allegati:
You must be logged in to view attached files.Ciao VF, si comincia davvero a delineare il prodotto finito.
Ancora qualche "stranezza", nel caso di creazione di un nuovo foglio di lavoro all'interno di un cliente esistente, viene fuori un errore (nome già esistente) sul nome "status" Cliccando su "SI" poi lo crea con il nome corretto.
Ancora, su alcuni clienti, sia lavorando a nuovo che su cliente esistente in modifica dello stato lavorazione, non aggiorna lo stato sulla base dati scadenzario (es. cliente 92125).
Prova un po'....
Buonanotte e grazie ancora
una cosa l'ho beccata io....dai, almeno una piccola soddisfazione...
non funzionava nei nomi dove c'erano dei doppi apici, tipo il cliente 92125 oppure il 92111. Tolti i doppi apici dalla descrizione del cliente nello scadenzario va come un fulmine.
Resta il conflitto sul nome status.
Buonanotte
rs4464 wrote:non funzionava nei nomi dove c'erano dei doppi apici
Questi apici rappresentano sempre un problema, ma non dovresti essere costretto a modificare la base dati, il codice deve essere in grado di gestire la situazione. Ora vedo di risolvere anche il problema che hai descritto sullo status.
rs4464 wrote:Resta il conflitto sul nome status
Ho capito il problema, è l'elenco dinamico sulle voci dello "status" che è definito nella pagina "inserire beneficiari" del model.xlsx; questa pagina poi viene copiata e rinominata col nome del "beneficiario" e si genera quindi un conflitto di nomi e di indirizzi. Risolverò creando una pagina nascosta che contiene l'elenco (però quando vorrai aggiornare questo elenco dovrai scoprire la pagina nel model, fare la modifica, rinascondere la pagina, salvare e chiudere il model)
Il problema sullo status nell'ambiente di lavoro ( dove il codice dovrà girare ) non è emerso, mi accadeva ieri sera sul computer di casa. Quindi al momento lascerei stare. Sarebbe forse più interessante, se possibile, riuscire a far trattare anche le stringhe contenenti i doppi apici. Comunque posso già dirti, ho provato stamani sommariamente al lavoro, che la cosa sembra girare davvero bene!
Lascia stare al momento il problema dello status. Probabilmente nelle opzioni di Excel o da qualche altra parte c'è qualcosa, diverso dall'ambiente da dove si è manifestato il problema, che riesce a non far emergere il problema.
Allego la versione 8 del progetto per tua verifica.
Ho risolto il problema del conflitto con il nome "status" tra i fogli (spero) e ho risolto il problema della mancata registrazione dello status nello scadenzario per i nomi contenenti le virgolette (quindi non semplici apici).
rs4464 wrote:si comincia davvero a delineare il prodotto finito
Speriamo Â
Allegati:
You must be logged in to view attached files.Quindi devo usare modello_VF8.xlsm , model-2.xlsx e scadenzario-4.xlsx .
Sbirciando nel codice ho visto dei riferimenti a model , devo quindi rinominare model-2 in model e scadenzario-4 in scadenzario , presumo . . . .
rs4464 wrote:presumo
Presumi giusto, accade che in questo forum tutti i file vengono conservati in un'unica cartella sul server e se ci sono più file con lo stesso nome (e quindi conflitti di nomi), vengono rinumerati automaticamente dal sistema. In realtà nella tua cartella avrai sempre il file base con la macro (e puoi chiamarlo come vuoi, io aggiungo un numero di revisione solo per avere l'ultima sottomano), il file model.xlsx e il file scadenzario.xlsx.
Mi dispiace davvero tediarti così ma rispetto alla VF7 la VF8 va in errore di run-time '9' ( Indice non incluso nell'intervallo). All'interno della sezione 'nuovo cliente', dopo le istruzioni "isNew = True" e "Set wb = Workbooks.Add..." si ferma su "With UserForm1". Una curiosità , quei doppi rettangoli colorati sotti ai bottoni sono solo estetici ?
Â
rs4464 wrote:Mi dispiace davvero tediarti così ma rispetto alla VF7 la VF8 va in errore di run-time '9' ( Indice non incluso nell'intervallo). All'interno della sezione 'nuovo cliente', dopo le istruzioni "isNew = True" e "Set wb = Workbooks.Add..." si ferma su "With UserForm1". Una curiosità , quei doppi rettangoli colorati sotti ai bottoni sono solo estetici ?
Non mi stai "tediando" affatto 🙂
Purtroppo a me non dà errore e quindi finchè non sistemiamo le cose in modo omogeneo bisogna continuare a sentirsi.
Ho aggiunto un rettangolo blu più scuro sotto un rettangolo blu chiaro solo per simulare un gradevole effetto ombra che sei liberissimo di modificare a tuo gusto 😀
vecchio frac wrote:si ferma su "With UserForm1".
In prima battuta, hai preso l'ultimo file "model" ?
Lo riallego qui perchè lo vedo sparito tra gli allegati al post precedente. S eha un nome diverso da "model.xlsx", rinominalo così.
Allegati:
You must be logged in to view attached files.E' perfetto !
Sono però costretto a chiederti una cosa che non avevo messo in preventivo perché non ero a conoscenza delle altre basi dati scadenzario che invece mi hanno sottoposto di recente. In una di queste ci sono, per uno stesso cliente, più righe contenenti lo stesso beneficiario aventi però dettagli differenti ( ad es. i Beneficiari "Medici" possono avere come Dettaglio "Guardia Medica" , "Medicina Generale" oppure "Specialisti". La creazione del nuovo foglio all'interno del file cliente deve quindi avvenire, non solo nel caso di Beneficiario mai trattato bensì della coppia "Beneficiario-Dettaglio" mai trattato. La chiave diventa quindi più selettiva.
-
AutoreArticoli