You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Ricerca materiale – Aggiornamento ListBox
[RISOLTO] Ricerca materiale – Aggiornamento ListBox2017-12-18T19:54:37+01:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Ricerca materiale – Aggiornamento ListBox

Visualizzazione 11 filoni di risposte
  • Autore
    Post
    • AvatarREAPAT
      Partecipante
        Post totali: 36

        Ciao a tutti,

        sono nuovo nel forum e alle prime armi con VBA.

        Non so se sia possibile inviare come allegato il mio programma.

        In breve lo spiego qui. Ho una UF che mi permette di ricercare tramite textbox dei materiali presenti in una listbox. Al premere del materiale ricercato con un commandbutton posso modificare le info del materiale. Confermando le modifiche ovviamente la listbox con tutti i materiali viene aggiornata.

        Il problema si pone quando faccio la ricerca del materiale tramite textbox (ovviamente la listbox cambia e dunque la listbox iniziale contiene tutti i materiali, con la ricerca ne contiene meno). Quando seleziono un materiale dopo la ricerca e lo modifico la listbox viene aggiornata ma non effettuando la modifica sul materiale selezionato dopo la ricerca ma la effettua la modifica sul numero della riga in base alla listbox iniziale.

        Il problema appunto è che la modifica viene effettuata sulla riga della listbox e non sulla riga del materiale selezionato.

        Sotto inserisco il codice VBA.
        Il problema per me è quell oche ho descritto ma non saprei come sistemarlo.

      • AvatarREAPAT
        Partecipante
          Post totali: 36
          Private Sub mCaricaListBox1(ByVal s As String)
          
              Dim lRiga As Long
              Dim lng As Long
              Dim lCont As Long
          
              With sh1
                  lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
              End With
              lCont = 0
              With Me.ListBox1
                  If s = "Initialize" Then
                      For lng = 1 To lRiga
                          .AddItem
                          .List(lCont, 0) = sh1.Cells(lng, 1).Value
                          .List(lCont, 1) = sh1.Cells(lng, 2).Value
                          .List(lCont, 2) = sh1.Cells(lng, 3).Value
                          .List(lCont, 3) = sh1.Cells(lng, 4).Value
                          .List(lCont, 4) = sh1.Cells(lng, 5).Value
                          .List(lCont, 5) = sh1.Cells(lng, 6).Value
                          .List(lCont, 6) = sh1.Cells(lng, 7).Value
                          .List(lCont, 7) = sh1.Cells(lng, 8).Value
                          .List(lCont, 8) = sh1.Cells(lng, 9).Value
                          lCont = lCont + 1
                      Next
                  ElseIf s = "CommandButton" Then
                      ListBox1.RowSource = ""
                      For lng = 1 To 100000
                      IDArray(lng) = ""
                      Next
                      For lng = 1 To lRiga
                          If InStr(UCase(sh1.Range("A" & lng).Value), _
                              UCase(Me.TextBox1.Text)) Then
                          .AddItem
                          .List(lCont, 0) = sh1.Cells(lng, 1).Value
                          .List(lCont, 1) = sh1.Cells(lng, 2).Value
                          .List(lCont, 2) = sh1.Cells(lng, 3).Value
                          .List(lCont, 3) = sh1.Cells(lng, 4).Value
                          .List(lCont, 4) = sh1.Cells(lng, 5).Value
                          .List(lCont, 5) = sh1.Cells(lng, 6).Value
                          .List(lCont, 6) = sh1.Cells(lng, 7).Value
                          .List(lCont, 7) = sh1.Cells(lng, 8).Value
                          .List(lCont, 8) = sh1.Cells(lng, 9).Value
                          lCont = lCont + 1
                          End If
                      Next
                  End If
              End With

          Forse però mi è più semplice allegare il file e spiegarlo

          • Questa risposta è stata modificata 4 anni, 6 mesi fa da AvatarREAPAT.
        • BySalvBySalv
          Amministratore del forum
            Post totali: 894

            Ciao REAPAT, Benvenuto nel Forum, ti prendi l’onere e l’onore del primo Topic inserito.

            dunque dal tuo codice, vedo che è un semplice caricamento di una Listbox.

            Partendo dal presupposto che hai un elenco di Codici, bisogna vedere in quale fase dobbiamo intervenire.

            1) La prima fase è quella di caricamento del Listbox
            2) Scelta o ricerca del codice
            3) Scrittura del Codice o Dati selezionati, in Celle o TextBox per la modifica
            4) Scrittura dei dati nell’elenco con le modifiche effettuate
            5) Caricamento del ListBox con i dati modificati

            Diciamo che questa è una sequenza ottimale del processo di una modifica dati.

            Adesso mancandomi il file, non saprei dove e cosa suggerirti.

            Fai sapere Ciao By Sal :bye:

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • AvatarREAPAT
            Partecipante
              Post totali: 36

              Ciao,

              sono entusiasta di essere il primo che inserisce un Topic.
              C’è la possibilità di inviare l’allegato ?

              Comunque il problema riscontrato secondo me è proprio nel punto 5 (non che ho già modificato il materiale selezionato, ma quando eseguo una ricerca sui materiali totali – dunque una “prima” listbox” poi ottengo una “nuova” listbox nella quale ho solo i materiali con criterio desiderato).

              Ripeto, inviandoti il file sarebbe più facile da comprendere,

              Fammi sapere,

              Patrick

            • BySalvBySalv
              Amministratore del forum
                Post totali: 894

                Ciao, vedi qui “Filedropper”

                http://www.filedropper.com/

                Anche se per il momento i file li conserva per pochi giorni, in seguito li conserveremo.

                Dammi più spiegazioni possibili.

                Ciao By Sal :bye:

                Ciao By Sal (8-)
                se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

              • AvatarREAPAT
                Partecipante
                  Post totali: 36

                  <br /><div style=font-size:9px;font-family:Arial, Helvetica, sans-serif;width:127px;font-color:#44a854;> upload files online</div>

                  Ma sbaglio se ora copio il link dove ho inserito il file ?

                • AvatarREAPAT
                  Partecipante
                    Post totali: 36

                    Da provare sarebbe la cosa seguente:

                    1) apri la UF, selezioni subito un materiale (per comodità prendi il secondo) poi bottone MODIFICA SINGOLA, e poi premi OptionButton Residente e inserisci nel textbox che si apre. Poi con Bottone Conferma Modifica (in rosso). e poi indietro. Questo funziona.

                    2) apri la UF, inserisci nel Textbox “Tipologia” in alto a sinistra: “Divani”.. e premi bottone “AVVIA LA RICERCA”. La listbox carica i materiali che hanno tipologia divani. Poi scegli il primo materiale (Num ID 14). poi premi MODIFICA SINGOLA e poi premi OptionButton Residente e inserisci nel textbox che si apre. Poi con Bottone Modifica (in rosso). indietro…

                    Ecco qui se riapri la UF vedrai che il materiale non è stato modificato, ma è stato aggiunta la modifica sul primo materiale della listbox generale.

                    E invece avrebbe dovuto modificare il materiale con ID 14.

                    Spero sia un po’ più chiaro :)

                  • AvatarREAPAT
                    Partecipante
                      Post totali: 36

                      http://www.filedropper.com/ricercamateriale_2

                      Questo è il file giusto scusami

                    • BySalvBySalv
                      Amministratore del forum
                        Post totali: 894

                        Ciao, Ho dato un occhiata al file, trovo alcune incongruenze

                        1) Quello che mi hai mandato è un file di prova?
                        2) Gli articoli nel foglio “Scheda_Prodotti” non sono unici ci sono ripetizioni dello stesso articolo nell’elenco, perchè, cosi deve essere?
                        3) Negli articoli non esiste nessun valore unico, possono essere ripetuti più volte, esiste un valore unico a cui fare riferimento.
                        4) Dalle macro vedo che vai a variare solo il dato nella colonna “E”
                        5) Nella Userform la scelta effettuata con il ListBox, viene riportata nei ComboBox2-3-4-5-8, però non sono modificabili deve essere cosi.
                        6) Alla fine solo solo la colonna “E” con il ComboBox14 e il valore da riportare nella modifica, oppure sono altri dati da riportare in modifica se “SI” dove devono essere inseriti.

                        Fai sapere Ciao By Sal :bye:

                        Ciao By Sal (8-)
                        se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                      • AvatarREAPAT
                        Partecipante
                          Post totali: 36

                          Ciao,

                          poco dopo ho messo un nuovo file condiviso… Senza i bug e i vari fogli di lavoro che non uso.

                          Comunque rispondendo ai tuoi quesiti:

                          1) Quello che mi hai mandato è un file di prova? SI È UN FILE DI PROVA
                          2) Gli articoli nel foglio “Scheda_Prodotti” non sono unici ci sono ripetizioni dello stesso articolo nell’elenco, perchè, cosi deve essere? SI, POSSONO RIPETERSI MA NON È IMPORTANTE QUELLO
                          3) Negli articoli non esiste nessun valore unico, possono essere ripetuti più volte, esiste un valore unico a cui fare riferimento. C’È IL NUMERO ID (COLONNA G) (X, 7)
                          4) Dalle macro vedo che vai a variare solo il dato nella colonna “E”! CORRETTO, PREMENDO MODIFICA SINGOLA, PREMO OPTIONBUTTON RESIDENTI E TRAMITE COMBOBOX14 INSERISCO E VADO A MODIFICARE IL MATERIALE SOLO NELLA COLONNA E
                          5) Nella Userform la scelta effettuata con il ListBox, viene riportata nei ComboBox2-3-4-5-8, però non sono modificabili deve essere cosi. ESATTO QUELLI L’UTENTE NON PUÒ UTILIZZARLI, SONO SOLO DI RIEPILOGO
                          6) Alla fine solo solo la colonna “E” con il ComboBox14 è il valore da riportare nella modifica, oppure sono altri dati da riportare in modifica se “SI” dove devono essere inseriti. ESATTAMENTE SOLO COMBOBOX14.

                          Il problema appunto che funziona tutto correttamente se modifico direttamente il materiale senza fare una ricerca tramite textbox iniziali. Quando però faccio una ricerca, la listbox si aggiorna con i criteri da me scelti nelle textbox, poi svolgo lo stesso procedimento per modificare il materiale desiderato ma poi la modifica non me la fa sul materiale scelto ma sul materiale della listbox iniziale situato nella stessa posizione dell’ultimo materiale selezionato

                        • BySalvBySalv
                          Amministratore del forum
                            Post totali: 894

                            Ciao REAPAT, allora facendo riferimento all’ID che è il valore unico, ti ho modificato la macro per la scrittura dei dati sul foglio “Scheda_Prodotti”, il Pulsante “Conferma Modifica”

                            Ti ho fatto un semplice Ciclo di ricerca basato direttamente sull’elenco del foglio, a volte specialmente quando una ListBox è filtrata non viene rispettato il “ListIndex”

                            '--------------------------------- Codice Aggiunto
                            'esegue il ciclo su tutto l'elenco in scheda_prodotti, quando trova l'ID Combobox8 modifica i dati
                            For r = 2 To sh1.Cells(Rows.Count, 1).End(xlUp).Row
                                If sh1.Cells(r, 7) = Val(ComboBox8) Then
                                    sh1.Cells(r, 1) = ComboBox2
                                    sh1.Cells(r, 2) = ComboBox3
                                    sh1.Cells(r, 3) = ComboBox4
                                    sh1.Cells(r, 4) = ComboBox5
                                    sh1.Cells(r, 5) = ComboBox14
                                End If
                            Next r
                            '--------------------------------- Fine codice aggiunto

                            Ho bloccato il resto del Codice nella Userform, al limite inserisci tu i vari controlli da fare prima di modificare il Codice.

                            allego anche il file

                            http://www.filedropper.com/ricercamateriale_3

                            Ciao By Sal :bye:

                            Ciao By Sal (8-)
                            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                          • AvatarREAPAT
                            Partecipante
                              Post totali: 36

                              Ciao :)

                              Ho controllato il file che mi hai allegato e funziona tutto correttamente.

                              Era parecchio tempo che cercavo di risolvere il problema ma non riuscivo.
                              Grazie davvero tantissimo per l’aiuto.

                              Se ho altri problemi non esiterò a richiamare il forum :)

                              A presto e ancora grazie :)

                              Patrick

                          Visualizzazione 11 filoni di risposte
                          • Il topic ‘[RISOLTO] Ricerca materiale – Aggiornamento ListBox’ è chiuso a nuove risposte.