› Sviluppare funzionalita su Microsoft Office con VBA › Riprodurre tabella modificabile in Userform
-
AutoreArticoli
-
ciao a tutti,
volevo domandarvi un aiuto: ho un tasto dove richiama una userform. in questa userform deve richiamare una tabella, riproducendo la scheda "Fatturazione spinale". Deve riprodurre le colonne B,C,D,E,F,G,H e partire dalla riga 12. Quando apro questa userform con la tabella, devo poter modificare la quantità (colonna C), e deve modificarsi automaticamente anche nella scheda "Fatturazione spinale".
Si può fare? cè un modo per creare una griglia modificabile?
vi ringrazio come sempre anticipatamente e vi auguro una buona giornata
saluti
Marco
Allegati:
You must be logged in to view attached files.Ciao marco_budin
Non esiste un controllo che su una userform riproduca l'intervallo di un foglio di lavoro e che consenta un'interazione diretta con il foglio di lavoro stesso.
A mio modo di vedere si potrebbero usare o una Listbox o, ancor meglio, una Listview ma poi ci sarebbe da scrivere tutto il codice VBA per la gestione di quel che deve accadere.
Ad esempio con una listbox facendo doppio clic su un itaem si potrebbe aprire una seconda userform che riporti i dati per la successiva modifica sul foglio.
Insomma una strada in salita ne vale la pena? Non si possono fare direttamente le modifiche sul foglio anzichè tramite una userform?
Alfredo
P.S. Forse mi sbaglio ma Access (che personalmente conosco pochissimo) è più adatto in questo tipo di situazioni
Forse mi sbaglio ma Access (che personalmente conosco pochissimo) è più adatto in questo tipo di situazioni
Saluto alfredo, Marco , forse tu non hai seguito tutti i post prededenti, è un cultore di Excel perchè ha fatto dei progetti validi(spero tanto che sia anche un buon Medico
), quindi trasportare tutto il suo lavoro in Access credo che sia molto difficoltoso,comunque , ho inserito nel file che hai allegato , nella userform , un controllo Listview, e ho associato a questo controllo il codice che ti posto.Il codice non fa altro, che inserire nel controllo tutti i valore della tua tabella, provalo, ti allego anche il file, studia il codice per capire il funzionamento.Private Sub UserForm_Initialize() With ListView1 .Gridlines = True .View = lvwReport .FullRowSelect = True .MultiSelect = True .ColumnHeaders.Add Text:="Cod.Pharma", Width:=55, Alignment:=0 .ColumnHeaders.Add Text:="Quantita", Width:=55, Alignment:=2 .ColumnHeaders.Add Text:="Marca", Width:=55, Alignment:=2 .ColumnHeaders.Add Text:="Descrizione", Width:=150, Alignment:=2 .ColumnHeaders.Add Text:="Ref", Width:=55, Alignment:=2 End With Dim riga, rigalist As Integer Dim ultimariga As Variant rigalist = 0 riga = 15 ListView1.ListItems.Clear Sheets("Fatturazione spinale").Select With Sheets("Fatturazione spinale") While .Cells(riga, 4).Value <> "" ultimariga = Cells(Rows.Count, "b").End(xlUp).Row With ListView1 Set lista = ListView1.ListItems.Add(Text:=Cells(riga, "b").Value) lista.ListSubItems.Add Text:=Cells(riga, "c").Value lista.ListSubItems.Add Text:=Cells(riga, "d").Value lista.ListSubItems.Add Text:=Cells(riga, "f").Value lista.ListSubItems.Add Text:=Cells(riga, "g").Value End With riga = riga + 1 Wend End With End SubQual è 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.Ciao Albatros! grazie mille per il tuo aiuto. Se sono riuscito a creare delle cose con excel, è solo grazie al vostro grande e validissimo aiuto (Patel, Vecchio frac, Marius, Luca, (spero di non aver dimenticato qualcuno
). Se non gioco al computer ogni tanto lavoro anche in ospedale
Ti ringrazio per la tua risposta, e andrò subito a guardare/studiare la tua soluzione, per poterla adeguare e inserire nel progetto.
Ringrazio anche alfrimpa per la valida risposta!
saluti e a presto
Marco
Ciao Marco
A mo' di esempio di quanto dicevo ti ho allegato un file dove se fai doppio clic sulla listview su Fatturazione ti viene aperta una seconda userform con 4 textbox che visualizzeranno i dati in precedenza selezionati sulla listview.
Dalla seconda userform puoi modificare i dati e da questa trasferire le modifiche sul foglio (ma per questo non c'è nessun codice scritto).
Alfredo
Allegati:
You must be logged in to view attached files.ciao Alfredo!
ti ringrazio molto per la tua risposta. Unica cosa penso che hai allegato il file senza le modifiche, perché non riesco a capire dove schiacciare doppio click... scusami...
ti ringrazio comunque per la tua risposta!
saluti e a presto
marco
Il doppio clic lo devi fare su una qualsiasi riga della listview che è sull'userform Fatturazione
Alfredo
Ciao Alfredo, ho provato ad aprire la tua versione, la userform è vuota. Penso che non hai allegato il file corretto da te. Puoi riallegarlo? Ti ringrazio ancora per il tuo aiuto.

saluti e a presto!
marco
Si può fare? cè un modo per creare una griglia modificabile?
Non capisco lo scopo.
Hai già la fattura nel foglio, per cui puoi già modificare quella.
Quale sarebbe il vantaggio di riprodurre tutto in un userform?
Calcolando che non è una di certo passeggiata.
Quali sono le tue conoscenze di codifica VBA?Ti allego un file che fa quello che tu hai chiesto.Apri la userform"Fatturazione",vedrai caricati nella listview i dati della tua tabella(ho lasciato un bag nel caricamento della lista, spero che tu posso risolverlo
, Excel ODIA le celle unite) , nella stessa userform troverai delle textbox , facendo doppioclick su un item della listview questi riempiranno le varie textbox,per modificare un campo, modificalo nella textbox di appartenenza, una volta inserito il dato fai click sul pulsante "Salva Modifica",la modifica si ripercuotera nella tua listview e nello stesso tempo aggiornera la tua tabella.Ti allego il codice e il file.Option Explicit Private Sub CommandButton1_Click() Dim righe As Integer righe = ListView1.SelectedItem.Index + 14 With Worksheets("Fatturazione spinale") Cells(righe, "b").Value = TextBox1.Text Cells(righe, "c").Value = TextBox2.Text Cells(righe, "d").Value = TextBox3.Text Cells(righe, "f").Value = TextBox4.Text Cells(righe, "g").Value = TextBox5.Text End With Call UserForm_Initialize End Sub Private Sub ListView1_DblClick() Dim codigo As Variant codigo = ListView1.SelectedItem Worksheets("Fatturazione spinale").Select TextBox2 = ListView1.SelectedItem.SubItems(1) TextBox3 = ListView1.SelectedItem.SubItems(2) TextBox4 = ListView1.SelectedItem.SubItems(3) TextBox5 = ListView1.SelectedItem.SubItems(4) TextBox1 = ListView1.SelectedItem End Sub Private Sub UserForm_Initialize() Dim lista As Object Dim riga, rigalist As Integer Dim ultimariga As Variant With ListView1 .Gridlines = True .View = lvwReport .FullRowSelect = True .MultiSelect = True .ColumnHeaders.Add Text:="Cod.Pharma", Width:=55, Alignment:=0 .ColumnHeaders.Add Text:="Quantita", Width:=55, Alignment:=2 .ColumnHeaders.Add Text:="Marca", Width:=55, Alignment:=2 .ColumnHeaders.Add Text:="Descrizione", Width:=150, Alignment:=2 .ColumnHeaders.Add Text:="Ref", Width:=55, Alignment:=2 End With riga = 15 ListView1.ListItems.Clear Sheets("Fatturazione spinale").Select With Sheets("Fatturazione spinale") While .Cells(riga, 4).Value <> "" ultimariga = Cells(Rows.Count, "b").End(xlUp).Row With ListView1 Set lista = ListView1.ListItems.Add(Text:=Cells(riga, "b").Value) lista.ListSubItems.Add Text:=Cells(riga, "c").Value lista.ListSubItems.Add Text:=Cells(riga, "d").Value lista.ListSubItems.Add Text:=Cells(riga, "f").Value lista.ListSubItems.Add Text:=Cells(riga, "g").Value End With riga = riga + 1 Wend End With End SubQual è 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.ciao Albatros!
Non ho parole! Sei fantastico, cercherò di separare le celle, così penso si risolve anche il bug
Stasera ci lavoro e studio il tuo codice che hai creato! sei davvero un grande. Vista la complessità magari tornerò a chiederti delucidazioni.Ti ringrazio per il tuo aiuto!
saluti e a presto
Marco
Ciao Albatros, ho preso i tuoi dati/formule e l'ho inserito nel mio progetto. Ma mi da errore. Non riesco a far riprodurre la tabella (con griglie... spazi...). Devo sbagliare qualcosa. Credo che non riesco ad associare la Listview alla "scheda spinale"...
ti allego originale, cosi vedi l'errore. Schiacciando il tasto blu "Visualizza fattura" nella scheda Intervento spinale, dovrebbe apparire quella UserForm (che ho chiamato FatturaSpine)
Ho tolto come mi hai consigliato tu le celle unite dalla tabella di fatturazione (fatturazione spinale).
ti ringrazio anticipatamente,
saluti
Marco
Allegati:
You must be logged in to view attached files.l'errore che ti da è perche manca una libreria.
Vai su editor VBA nel menu riferimenti apri e metti la spunta a"Microsoft windows Common controls 6.0"
sostituisci la riga di codice come sotto
While .Cells(riga, 5).Value <> ""fai sapere
c'è ancora da limare il codice del pulsante salva, perchè ogni volta che salvi ti aggiunge i campi di intestazione della viewlist
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 )ciao Albatros! grazie mille del tuo prezioso aiuto, sono riuscito ad applicare i tuoi consigli e ora funziona!!
Il problema del duplicare le colonne al momento del salvataggio... è relativo, perché ho notato se chiudi e riapri riparte correttamente... a me serve quella userform per modificare un valore se è stato inserito in maniera errata. Questo ci aiuta a non perderci tra le schede... soprattutto i miei colleghi che non sono molto esperti di computer. Quindi tutto quello che è immediato per loro è un vantaggio e per me anche che non devo correggere i loro errori
ti ringrazio ancora molto del tuo aiuto e ti terrò informato su eventuali nuove modifiche!
ti auguro una buona serata a presto
Marco
Hai già la fattura nel foglio, per cui puoi già modificare quella.
Quale sarebbe il vantaggio di riprodurre tutto in un userform?
Però Marco non hai dato riscontro all'osservazione di Leonardo, che anche se troppo secca è per certi versi condivisibile. Trovi più comodo avere un form di inserimento dati per non smanettare direttamente la base dati o hai altri vantaggi che non conosciamo? Così, tanto per discutere un attimo anche dell'impostazione del lavoro, e per cercare di ottimizzare le soluzioni. Sempre se interessa 🙂
Però Marco non hai dato riscontro all'osservazione di Leonardo, che anche se troppo secca è per certi versi condivisibile
credo, nella mia ignoranza, che Marco gia abbia dato risposta, anche indirettamente col post #14963
a me serve quella userform per modificare un valore se è stato inserito in maniera errata. Questo ci aiuta a non perderci tra le schede... soprattutto i miei colleghi che non sono molto esperti di computer.
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 )
Ciao A tutti! scusate se rispondo solo ora. con tutti i post, ho perso quella di Leonardo! scusami tanto. Anzi mi interessa eccome
Come dice giustamente albatros, a me serve per andare a correggere un valore che ho inserito erroneamente nella fatturazione. Senza andare fisicamente a cercare la scheda. Se tu guardi l'originale che ho mandato nel post #14953 vedrai la quantità di schede che contiene l'Excel. Andare a cercare la scheda di fatturazione soprattutto tornare poi alla scheda di registrazione, risulta magari semplice per me, ma per i miei colleghi che non hanno competenze informatiche è molto complicato.
Noi inseriamo i valori nella tabella automaticamente con l'aiuto di un lettore ottico nella cella "codice da scansionare"... capita però appunto scansioniamo erroneamente 2 volte il prodotto, o il prodotto sbagliato. e allora li comincia l'incubo... andare a cercare la scheda di fatturazione e andare a correggere manualmente. Quindi questa userform è molto pratica e immediata. Senza che il collega debba andare a cercare o fare casini
Quindi risulta più semplice il sistema proposto da albatros e da alfrimpa! Infatti anche il file proposto da alfrimpa è fantastico e ho potuto prendere spunto. Ho messo la formattazione bold per la colonna 1 e l'ho fatto diventare rosso il valore. Cosi maggiormente visibile. Poi ho tolto le caselle che a me non servivano e ho lasciato solo la possibilità di modificare il valore delle quantità.
Ah una cosa interessante, ho scoperto che non serve fare doppio clic sulla cifra per modificare… basta inserire nella textbox la cifra che si vuole inserire, selezionare la riga interessata, e poi schiacciare su modifica. Più interessante
allego il file, così se volete potete guardarlo. ci sono moltissimi codici che mi avete aiutato a sviluppare.
spero che possa essere di aiuto anche a qualcun altro!
vi ringrazio immensamente per il vostro aiuto.
alla prossima
Marco
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
