Foglio con doppia funzionalità
Hai un problema con Excel? 
Foglio con doppia funzionalità
di Fabrizio (utente non iscritto) data: 22/02/2013 18:50:39
Un caro saluto a tutto lo staff.
Avrei una necessità che qui di seguito spiego: AAA.xls, Foglio1 nella cella C9 ho inserito la funzione (=se(e13"";"";C:Percorso[BBB.xls]Commessa!P2) ) nella cella D9 idem con Q2 al posto di P2 e nella cella E9 idem con R2 al posto di P2, fin qui funziona tutto. Nella cella P2 del foglio Commessa a sua volta in ognuna ho inserito una funzione(=(indiretto("a"&conta.valori(a:a)+rif.riga(e6)-1) ) in Q2 idem mettendo "b" al posto di "a" e nella cella R2 idem mettendo "c" al posto di "a"; tutto questo per andare a prendere l'ultimo record nelle colonne A-B-C sempre di Commessa,(parto da E6 perche le prime 5 righe sono solo testo) e anche qui funziona, il problema salta fuori quando decido di salvare con nome AAA.xls con ClientePippo987.xls, riapro AAA.xls vergine inserisco i miei dati prende i valori corretti e salvo con nome ClientePluto345.xls.
Se riapro ClientePippo987.xls trovando la funzione SE in C9 mischia i dati perche nel frattempo nel file BBB.xls Commessa sono stati inseriti altri record nelle colonne A-B-C.
ora credo che bisogna scrivere qualcosa in Vba ma sinceramente non so come affrontare l'argomento, qualcuno mi puo dare una mano a risolvere questo problema?
grazie in anticipo
di HarryBosch data: 25/02/2013 01:41:21
Ciao Fabrizio
con il vba si può risolvere certamente.
Credo che servirà un file di esempio con qualche dato fittizio, che attualmente non riesco a farmi un quadro chiaro della situazione.
di Fabrizio (utente non iscritto) data: 25/02/2013 21:50:46
Ciao HarryBosch, hai ragione senza un esempio è dura far capire cosa serve, ecco in allegato quanto richiesto, perdona ma per errore ho allegato 2 volte lo stesso file, quindi butta il file singolo e tieni il file zippato con dentro 4 file.
ho notato una cosa per tua conoscenza, sulla versione excel 2003 se quando apro il file già salvato faccio click su non aggiornare, allora va tutto bene i dati collegati non variano, mentre sulla versione 2010 mischia appunto i dati con l'ultimo record inserito, a questo punto credo bisogna forzare l'apertura del file salvato a non aggiornare i dati collegati.
Grazie ancora per l'aiuto
a presto
di Fabrizio (utente non iscritto) data: 26/02/2013 18:41:18
Cioa HarryBosch, scusa ma devo correggere il tiro su quanto ho detto precedentemente.
per primo l'aggiornamento dei dati collegati viene effettuato in tutte e due le versioni excel mentre prima ti dicevo che non era cosi(ho sbagliato)
per secondo il foglio di lavoro principale è BBB.xls dove inserisco una riga alla volta, poi apro il file vergine AAA.xls ed a quel punto collega i dati come gia scritto precedentemente, salvo con nome il file e fin qui tutto bene.
a quiesto punto se devo andare a prendere e modificare una riga p.e. B7, qunado e se riapriro il file precedentemenete salvato p.e. ClientePippo987.xls dovrà aggiornare i dati collegati con la modifica appena effettuata.
mi auguro di essere stato un po piu chiaro di prima nell'espletare la richiesta.
grazie ancora a presto
di HarryBosch data: 26/02/2013 18:43:41
Stavo giusto dando un'occhiata ai tuoi file :)
di Fabrizio (utente non iscritto) data: 03/03/2013 09:29:08
Un aiutino su come impostare la cosa?
Non so come iniziare questo lavoro, se partire dal file di origine (AAA) o da quello dimdestinazione (BBB) che in ogni caso e quello sul quale si lavorera piu assiduamente visto che e li che si inseriscono e modificano i record
Grazie a presto
di HarryBosch data: 07/03/2013 13:59:43
Ciao Fabrizio
ti ho fatto aspettare un pò, porta pazienza :)
Riepilogo quanto mi sembra di aver capito; hai sostanzialmente due file:
- un file che funge da "modello" (AAA), il quale sarà successivamente rinominato con il nome del cliente, ovvero dopo la memorizzazione nel "database";
- un file che funge da "database" (BBB), dove raccogli alcuni dati relativi ad ogni commessa che prepari.
Tutti i file che assumeranno il nome del cliente saranno archiviati.
Il file modello, cancellerà i dati riportati nel database nel momento in cui verranno salvati nel file nominato come il cliente.
Provo ad elaborarti qualcosa con il vba, perché con le formule non credo si possa realizzare qualcosa di "performante".
Se ho sbagliato a riepilogare qualcosa fammi sapere...
di Fabrizio (utente non iscritto) data: 07/03/2013 21:43:51
Ciao HarryBosch, non ti preoccupare per l'attesa, capisco che dedichi anche il tuo tempo a rispondere a tutti e questo ti fa onore, so che appena puoi mi rispondi e te ne ringrazio in anticipo.
Venendo alla questione hai capito molto bene la funzionalità dei due fogli, precisando alcuni punti.
- un file che funge da modello (AAA) il quale sarà successivamente rinominato(io direi salva con nome) con il nome del cliente(es. pippo-100-b987, pluto-103-b654)
-il file modello cancellerà i dati riportati nel database nel momento in cui verranno salvati( in questo caso io avevo pensato di chiudere il file (AAA) senza salvarlo, così me lo ritrovavo pulito, che ne dici?).
Il problema arriva quando decido di riaprire un file già salvato es. pippo....., che con il mio vecchio metodo mi andava ad aggiornare i dati dal database al mio file salvato, perche nel frattempo nel database si erano aggiunti dei record e così alla riapertura andava a prendere sempre l'ultimo record inserito nel database.
Purtroppo succede spesso che devo riaprire i file salvati nei giorni successivi perche devo inserire in altri campi, nuovi valori o modificare alcuni esistenti che avevo inserito manualmente all'inizio.
Non vorrei creare confusione, ma nel frattempo avevo pensato ad una soluzione alternativa, mi spiego meglio: partendo dal file (BBB) disegnare un pulsante che alla pressione mi apre una userform con inserito un campo vuoto dove poter digitare ad esempio il numero della commessa da ricercare (questo è un valore univoco)che si trova nella colonna A,per esempio (100) ed una volta identificato a quel punto aprire il file precedentemente salvato(es. pippo-100.....) e sparargli i dati del file (BBB) delle celle della riga di pertinenza es. A6,B6,C6 in quella di destinazione es. pippo.. nelle celle C9,D9,E9.
se non mi sono spiegato chiedi pure.
a presto
di HarryBosch data: 08/03/2013 20:54:42
Ok, visto che la discussione era stata aperta il 22 e che dopo la risposta mi sono fatto attendere, ho deciso di farmi perdonare ^_^ preparandoti un esempio di come (secondo una mia personale opinione) si potrebbe gestire la situazione.
Innanzitutto farei a meno dei due file AAA e BBB, nel senso che ne utilizzerei uno solo; mi spiego:
nello stesso file avrai due fogli, uno che funge da "database" e quindi corrispondente al tuo BBB
e l'altro che funge da modello per creare una nuova commessa, corrispondente al tuo AAA
In ognuno dei due fogli trovi un pulsante:
- dopo la compilazione del foglio "Modello_commesse" puoi creare un nuovo file contenente tale commessa; verrà creato un file con un nome da te assegnato nel percorso indicato (la form che si apre ti indica tutto quanto). I dati di questa commessa verranno anche copiati nel foglio "C; se già esistono ti verrà richiesto se sovrascriverli o meno. I dati del foglio modello saranno cancellati dopo la creazione della relativa commessa;
- nel foglio "Archivio_Commesse" avrai invece la possibilità di modificare le commesse già create; qua devo ancora metter mano perché intanto volevo sapere se la cosa poteva andar bene. Si apre solo la maschera con l'elenco delle commesse già inserite.
Non ho ancora gestito gli errori del programma (ad esempio se il file esiste già o se inserisci un nome con caratteri non consentiti); aspetto un tuo parere.
Eventualmente posso sempre dividere il file in due separati, ma credo che una gestione del tipo che ti ho proposto sia decisamente più efficiente.
di Fabrizio (utente non iscritto) data: 10/03/2013 19:29:12
Che dire, HarryBosch sei un Grande, di più non potevo chiedere, anche se non hai nulla da farti perdonare, ottimo lavoro.
Ho fatto delle prove ed ho risconntrato alcuni punti da ottimizzare, a dire il vero ci ho provato inserendo anch'io del codice ma sono sincero, mi dava errore ed ho cercato di capire senza riuscirci, elenco qui di seguito i punti oscuri (a me!):
- Una volta che ho salvato il file con il nome del cliente.... tutto OK, il problema salta fuori quando lo riapro con inseriti i dati precedentemente salvati, se decido di aggiungere nel foglio in una cella diversa per es. (in M20 inserisco il testo cassa) e premo ancora sul pulsante registra mi da errore, sarebbe meglio invece che mi chieda di sovrascrivere il file esistente o salvare con un nuovo nome.
-Ho notato che sul foglio riepilogo commesse in colonna 4 non mi inserisce il nome del cliente( per comodità in cella B13 inserisco manualmente il nome del cliente per poi copiarlo nella riga opportuna di riepilogo commesse
-nel riepilogo commesse lo Userform2 è incompleto e non mi accetta la modifica della riga selezionata, ho capito che manca del codice
- Mi sono dimenticato di copiare dal modello commessa la cella A16 al riepilogo commessa in quinta colonna
-Non trovo il foglio "C" che mi hai indicato, dove è?
- anche qui non trovo il foglio "Archivio_Commesse"
Grazie per la tua pazienza; a presto Fabrizio
di HarryBosch data: 11/03/2013 16:34:46
- Si, gli errori ti saltano fuori perché come ti accennavo, non ho ancora gestito questa parte di codice;
- il nome del cliente non viene riportato perché tuo file iniziale, non ho trovato traccia della sua "cella"; che ora hai chiarito: B13
- l'Userform2 è incompleta, o meglio, completamente da scrivere ^_^; era solo un primo abbozzo per capire se effettivamente andava bene gestire i tuoi due fogli in un'unico file;
- Il foglio "C" è un mio errore di copiatura: intendevo sempre il foglio "Archivio_Commesse" che in effetti non trovi perché è nascosto molto bene ^_^: "xlSheetVeryHidden"
Trovi questa voce agendo sulle proprietà del foglio nell'editor vba, sotto la voce "Visible"; se reimpostoùi a 0 la proprietà il foglio torna visibile.
Appena posso ti allego un aggiornamento di questi punti.
di Fabrizio (utente non iscritto) data: 12/03/2013 19:12:12
Ciao HarryBosch, sono andato in editor vba, ma non avendo trovato il foglio "Archivio commesse" credo a questo punto che sia il foglio3, non vedendolo (lo hai naascosto bene) appunto non posso accedere alle sue proprietà per renderlo visibile modificando il suo relativo campo.
dovrai darmi una dritta per farmelo vedere.
grazie a presto
di Fabrizio (utente non iscritto) data: 18/03/2013 22:03:45
Ciao harryBosch, ci sono news per me?
a presto
di HarryBosch data: 19/03/2013 20:30:33
Ciao Fabrizio
sto guardando il file per sistemare gli ultimi accorgimenti che avevamo detto.
Appena posso ti allego il file con quest'ultime modifiche
di Fabrizio (utente non iscritto) data: 19/03/2013 20:58:48
Beh, che dire, Grazie in anticipo
di HarryBosch data: 29/03/2013 17:18:04
Sono tornato :)
Diversi giorni di assenza causa forza maggiore... stasera guardo e allego una revisione
di Fabrizio (utente non iscritto) data: 29/03/2013 18:45:46
Grazie, ancora per il tempo che mi dedichi.
Attendo una tua risposta
Ciao HarryBosch
di HarryBosch data: 30/03/2013 14:12:24
Ti allego una revisione del file.
Ci saranno da sistemare ancora diversi punti, ma voglio fare un quadro generale con il tuo punto di vista, perché l'ho lasciato in sospeso troppo tempo e ho perso un pò il filo del discorso.
Comunque ora le due Userform sono operanti e gestiscono eventuali errori.
Con quella che attivi nel foglio "modello_commessa" crei il nuovo file relativo alla commessa del cliente.
Con quella che attivi nel foglio "riepilogo_commesse" vai ad aprire una delle commesse già registrate.
Aspetto tuoi suggerimenti ^_^
di Fabrizio (utente non iscritto) data: 30/03/2013 21:53:00
Ciao HarryBosch, grazie ancora per il tuo intervento, ho provato il lavoro svolto e mi succede che nella Userform2 avviene il problema, quando clicco 2 volte sulla commessa che vedo in listbox1 da modificare mi dice che il file non esiste e che devo scegliere il percorso corretto, ma il percorso è quello giusto, ho verificato ed il file esiste salvato con il nome (COMM_106, ad esempio)(impostato in Setting[a1] c'è solo il percorso come e corretto che sia), credo a questo punto che il fulcro del problema sia in questa riga di codice:
nfile=cells(listbox1.listindex + 6, 4)
che è corretta ma secondo me non corrisponde in fase di ricerca al vero nome del file salvato(COMM_106, ad esempio)credo quindi che debba corrispondere alla texbox chiamata txtNome, ma qui mi perdo perche non so come associare la riga di prima(nfile) alla textbox txtNome. dammi una dritta grazie a presto
Vuoi Approfondire?