Sviluppare funzionalita su Microsoft Office con VBA confronto dati tabelle 2 fogli e aggiornamento dati

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

    andrea

      ciao a tutti, ho un problemino con una macro per un programma che diciamo dovrebbe servire per la gestione di un piccolo magazzino. Ho più fogli di lavoro, ma ora voglio concentrarmi su 2 di essi.

      INVENTARIO -> tiene traccia del magazzino attuale, dove ho essenzialmente i vari prodotti in tabella (codice prodotto,fornitore, quantità e altri dati)

      DEPOSITO -> tiene traccia ordini consegnati, con una tabella (data,numero ordine,codice prodotto,quantità depositata,quantità attuale,quantità aggiornata) -> quantità attuale fa riferimento alla quantità dell'inventario rispetto al prodotto "X" identificato mediante codice uguale; quantità depositata ovviamente si riferisce a quella consegnata e quantità aggiornata si riferisce alla somma delle prime 2 qui.

      Il mio problema sta nella realizzazione di una macro (tramite pulsante) che deve fare la seguente cosa:

      Prende i depositi effettuati (facendo ovviamente riferimento al codice prodotto) nella tabella DEPOSITO. Rispetto ogni codice presente nella tabella DEPOSITO, passa alla tabella INVENTARIO e cerca il relativo prodotto (stesso codice prodotto) per poi aggiornare il quantitativo presente (quantità) andando a sostituirne il valore presente in tale cella con quantitativo aggiornato (valore contenuto nella cella dell'elemento in analisi nella tabella DEPOSITO).

      fatto tale ciclo ed analizzato tutti gli elementi presenti nella tab in DEPOSITO, ed aver dunque aggiornato l'inventario, ovviamente "resetta" la tabella deposito (il reset l'ho già fatto e va, non riesco a fare la parte sopra, ovvero ricerca stesso codice e conseguente aggiornamento del quantitativo)

      GRAZIE MILLE A TUTTI IN ANTICIPO, ANDREA.

       

      #18836 Score: 0 | Risposta

      Luca73
      Partecipante
        58 pts

        Ciao

        La descrizione mi sembra chiara, se allegassi il file con i fogli e le impostazioni rimarrebbe tutto più semplice e le macro che hai già sviluppato.

        Per fare una ricerca hai due metodi o usi un find oppure fai un ciclo sulla colonna dei codici.

        una volta trovata la cella che ti interessa allora con un offset oppure con un altro metodo ti "sposti" sulla colonna delle quantita e la modifiche".

        Ciao

        Luca

         

        #18837 Score: 0 | Risposta

        Luca73
        Partecipante
          58 pts

          Ciao

          Ho buttato giù al volo due righe con le due idee che avevo in mente. Sicuramente i cicli possono essere fatti anche diversamente (con un do .... while o altro) secondo me ti dovrebbe venire facile adattarli.

          Ciao

          Luca

          Sub LucaCiclo()
          Dim CellaPartenza
          Dim CellaArrivo
          
          With Sheets("b")
              For Each CellaPartenza In .Range("A2", Sheets("b").Range("A2").End(xlDown))
              
                  For Each CellaArrivo In Sheets("a").Range("B2", Sheets("a").Range("B2").End(xlDown))
                      If CellaArrivo.Value = CellaPartenza.Value Then
                          CellaArrivo.Offset(0, 2).Formula = CellaPartenza.Offset(0, 1).Value
                          Exit For
                      End If
                  Next
              Next
          End With
          
          
          End Sub
          
          
          Sub LucaFind()
          Dim CellaPartenza
          Dim CellaArrivo
          
          With Sheets("b")
              For Each CellaPartenza In .Range("A2", Sheets("b").Range("A2").End(xlDown))
                  Set CellaArrivo = Sheets("a").Range("B2", Sheets("a").Range("B2").End(xlDown)).Find(What:=CellaPartenza.Value, LookIn:=xlValues, LookAt:=xlPart)
                  CellaArrivo.Offset(0, 2).Formula = CellaPartenza.Offset(0, 1).Value
                  Next
          End With
          
          
          End Sub
          
          #18848 Score: 0 | Risposta

          andrea

            grazie mille funziona! =)

            #18849 Score: 0 | Risposta

            Luca73
            Partecipante
              58 pts

              OK, bene!

              Quale delle due hai usato?

              Secondo me con il find dovrebbe diventare un po' più semplice se gli elenchi sono molto lunghi.

              Ciao

              Luca

              #18850 Score: 0 | Risposta

              andrea

                la prima, andava bene quindi ho tenuto subito quella.

                Avrei ora un secondo problema XD...l'ultimo di questo mio programmino...ora tutto funziona e posso diciamo aggiornare quantità sia aggiungendo che rimuovendo tramite 2 "bottoni" associati a 2 macro appunto prese da te...

                Ora l'ultima cosa che vorrei fare per renderlo perfetto, sarebbe solo rispettivamente alla tabella dell'inventario,sfruttare i codici a barre per ridurre quantità dato che i prelievi avvengono più frequentemente rispetto ai depositi che posso appunto fare facilmente e velocemente  inserendoli manualmente e poi usando la macro che mi hai dato.

                Creare i codici a barre non risulta un problema, ho provato di già e a partire da un nome di un oggetto "x" a maggazzino, una volta creato se punto la pistola, mi riporta in tabella il nome di tale oggetto "x". Ora quello che ho cercato di fare è la seguente cosa, sfruttando una macro trovata su internet perchè x i codici a barre e annesso lettore proprio non saprei come fare:

                vorrei una volta creato il database (la mia tabella di inventario) dove ci sono i vari oggetti, con relativo nome (id che li identifica, per ognuno del quale verrà realizzato un codice a barre), che se prelevo ad esempio l'oggetto "x", puntando con la pistola il relativo codice a barre (mi converte in automatico già ora il codice a barre in codice "normale" che quindi sarà presente in tabella)mi andasse a detrarre di una unità il mio quantitativo presente per il relativo oggetto.

                vi allego qui il codice trovato che ho cercato di usare ma niente xD

                Sub test_cod_barre()
                Option Explicit
                Private Sub Worksheet_Change(ByVal Target As Range)
                    Dim articolo As Range
                    If Not Target.Address = "$A$1" Then Exit Sub            'controlla se siamo in A1, se no esci
                    If Target.Value <> "" Then                              'controlla se A1 non è vuoto, se sì procedi
                        Application.EnableEvents = False
                        Set articolo = Range("A3", Range("A" & Rows.Count).End(xlUp)).Find(Range("A1").Value, LookAt:=xlWhole)   'cerca l'articolo
                        If articolo Is Nothing Then                                         'se non c'è l'articolo
                            MsgBox Target & " non è presente in inventario."                'messaggio
                        Else                                                                'altrimenti
                            articolo.Offset(0, 2).Value = articolo.Offset(0, 2).Value - 1   'decurta di uno la sua quantità
                            Beep                                                            'emetti un beep di conferma
                        End If
                        Range("A1") = ""                                                    'svuota la cella
                        Range("A1").Select
                        Application.EnableEvents = True
                    End If
                End Sub
                
                End Sub

                grazie

                 

                #18861 Score: 0 | Risposta

                Luca73
                Partecipante
                  58 pts

                  Ciao

                  a) cosa non funziona nella macro

                  b) allega un file tipico

                  c) in A1 scrivi il codice? nello stesso foglio dove c'è l'elenco in cui cerchi?

                  d) perche' c'e' una sub dentro un'altra sub?

                  CIao

                  Luca

                  #18862 Score: 0 | Risposta

                  andrea

                    sisi vero ho sbagliato a copiarlo qua, comunque questo codice l'ho preso e copia/incolla da internet per fare un test su un altro foglio excel. Faccio prima a dire esattamente quello che vorrei penso XD...

                    allora io tramite un programma esterno creo a partire dal nome (id identificativo) del mio prodotto "x" un codice a barre. Lo stampo e se lo leggo in automatico excel  me lo riporta in tabella il codice tradotto (id identificativo).

                    Ora quello che voglio fare io invece è, dopo aver creato il mio db (tabella INVENTARIO) con tutti i materiali e relativo (id identificativo) con le varie caratteristiche, tra le quali quantità presenti,  è che se leggo il bar code del prodotto "x" ad esempio, me lo cerchi nel mio db e ne scali una unità la quantità disponibile.

                    se qualcuno può aiutarmi, ne sarei molto grato xkè ho cercato altre discussioni con codici simili da sfruttare ma niente

                    #18863 Score: 0 | Risposta

                    andrea

                      mi sono inscritto però con un'altra mail e apro un altro post così posso allegare anche il mio file per facilitare il tutto

                    Login Registrati
                    Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
                    Rispondi a: confronto dati tabelle 2 fogli e aggiornamento dati
                    Gli allegati sono permessi solo ad utenti REGISTRATI
                    Le tue informazioni: