Sviluppare funzionalita su Microsoft Office con VBA Riprodurre tabella modificabile in Userform

Login Registrati
Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
  • Autore
    Articoli
  • #14862 Score: 0 | Risposta

    marco_budin
    Partecipante
      2 pts

      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.
      #14865 Score: 0 | Risposta

      alfrimpa
      Partecipante
        33 pts

        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

        #14867 Score: 0 | Risposta

        albatros54
        Moderatore
          89 pts

          alfrimpa ha scritto:

          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 Sub

           

          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.
          #14872 Score: 0 | Risposta

          marco_budin
          Partecipante
            2 pts

            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

            #14875 Score: 0 | Risposta

            alfrimpa
            Partecipante
              33 pts

              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.
              #14879 Score: 0 | Risposta

              marco_budin
              Partecipante
                2 pts

                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

                #14880 Score: 0 | Risposta

                alfrimpa
                Partecipante
                  33 pts

                  Il doppio clic lo devi fare su una qualsiasi riga della listview che è sull'userform Fatturazione 

                  Alfredo

                  #14881 Score: 0 | Risposta

                  marco_budin
                  Partecipante
                    2 pts

                    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

                    #14892 Score: 0 | Risposta

                    Anonimo
                      1 pt

                      marco_budin ha scritto:

                      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?

                      #14913 Score: 0 | Risposta

                      alfrimpa
                      Partecipante
                        33 pts

                        Ciao Marco

                        Ecco il file

                        Alfredo

                        Allegati:
                        You must be logged in to view attached files.
                        #14916 Score: 0 | Risposta

                        albatros54
                        Moderatore
                          89 pts

                          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 Sub
                          
                          

                           

                          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.
                          #14920 Score: 0 | Risposta

                          marco_budin
                          Partecipante
                            2 pts

                            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

                            #14953 Score: 0 | Risposta

                            marco_budin
                            Partecipante
                              2 pts

                              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.
                              #14955 Score: 0 | Risposta

                              albatros54
                              Moderatore
                                89 pts

                                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 )
                                #14963 Score: 0 | Risposta

                                marco_budin
                                Partecipante
                                  2 pts

                                  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

                                  #14994 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    Leonardo ha scritto:

                                    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 🙂

                                    #14996 Score: 0 | Risposta

                                    albatros54
                                    Moderatore
                                      89 pts

                                      vecchio frac ha scritto:

                                      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

                                      marco_budin ha scritto:

                                      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 )
                                      #14997 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        272 pts

                                        #15002 Score: 0 | Risposta

                                        marco_budin
                                        Partecipante
                                          2 pts

                                          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.
                                        Login Registrati
                                        Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
                                        Rispondi a: Riprodurre tabella modificabile in Userform
                                        Gli allegati sono permessi solo ad utenti REGISTRATI
                                        Le tue informazioni: