› Sviluppare funzionalita su Microsoft Office con VBA › confronto dati tabelle 2 fogli e aggiornamento dati
-
AutoreArticoli
-
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.
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
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
grazie mille funziona! =)
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
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
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
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
mi sono inscritto però con un'altra mail e apro un altro post così posso allegare anche il mio file per facilitare il tutto
-
AutoreArticoli