Sviluppare funzionalita su Microsoft Office con VBA operazioni dopo lettura codice a barre

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

    zukka79
    Partecipante

      Salve, scusate se apro un nuovo post, ma dovevo in quanto mi sono inscritto con email diversa per allegare il file.

      Allora essenzialmente io ho creato una sorta di db mediante l'utilizzo di tabelle in excel. Ci sono 4 fogli di lavoro come potrete vedere (INVENTARIO,DEPOSITO,PRELIEVO E FORNITORI)

      Ci interessano solo i primi 3. Nell'inventario sono inseriti i prodotti presenti in magazzino (id -> codice prodotto) che li collegherà poi con DEPOSITO e PRELIEVO. Ci sono poi altri dati, ma gli unici che ci interessano sono appunto il codice prodotto e i rispettivi quantitativi (quantità, quantità prelevata e quantità depositata). Ci sono varie macro attive, in particolare 1 per deposito e 1 per prelievo, che essenzialmente servono per aggiornare il quantitativo nell'inventario facendo riferimento all'id del prodotto. Attualmente pertanto è una cosa diciamo che funziona "manualmente", ovvero inserisco id del mio materiale e eseguo o deposito o prelievo e mi aggiorna l'inventario dove poi, in base alla quantità presente e quella di riordino mi segnala ed evidenzia se devo fare o no un ordine del prodotto"x".

      Ora vorrei rendere il tutto più automatico, dato che abbiamo a disposizione un lettore per codici a barre. Ho già visto che in automatico mi traduce un codice a barre in "nome" ovvero id del prodotto dato che i codici a barre li creo a partire appunto dall'id stesso. 

      Vorrei se possibile fare quanto segue:

      1)Se stò nel foglio INVENTARIO, ogni qualvolta leggo un codice a barre del prodotto "x" (che come detto in automatico traduce e metterebbe a tabella nella cella in cui sono ma non vorrei fare questo), in automatico mi scalasse di un'unità il quantitativo presente di tale prodotto sempre li nell'inventario. --> questa operazione potrei non farla se faccio le seguenti 2, ma se possibile vorrei perchè molti sono pigri e nn stanno li a scrivere la quantità presa o depositata...

      2)Se stò in DEPOSITO o PRELIEVO, una volta letto il codice a barre, me lo mettesse in tabella sotto alla colonna "codice prodotto" e in automatico mi chiedesse tramite finestrella di "inserire quantitativo" che poi una volta messo, mi vada sempre in tabella nella stessa riga ovviamente xD, in quantità (depositata o prelevata). Poi basterà cliccare i 2 "pulsanti" con macro già realizzati e funzionanti...qui il codice per i 2 sarà lo stesso cambierà solo il foglio

       

      GRAZIE IN ANTICIPO A TUTTI

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

      vecchio frac
      Senior Moderator
        272 pts

        zukka79 ha scritto:

        mi sono inscritto con email diversa per allegare il file.

        Bene, allora per non perderci tutto il pregresso segnalo qui il link alla discussione precedente:

        confronto dati tabelle 2 fogli e aggiornamento dati

        #18874 Score: 0 | Risposta

        andrea

          guarda non c'è stato chissà che progresso...nel senso che mi hanno dato una mano a fare corretta la macro dell'aggiornamento una volta depositato o prelevato...ovvero nel file che ho messo le macro dei 2 pulsanti rispettivi di effettua deposito o prelievo.

          confronto dati tabelle 2 fogli e aggiornamento dati

          #18877 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            andrea ha scritto:

            guarda non c'è stato chissà che progresso

            Avevo scritto "il pregresso" e non "il progresso" 🙂 per sottolineare che qualcosa comunque è stato detto e che sarebbe utile alla presente discussione.

            Comunque appena posso approfondisco e vedo se riesco a darti una mano anch'io.

             

            #18878 Score: 0 | Risposta

            Luca73
            Partecipante
              58 pts

              Ciao 

              non ho capito come leggi e passi ad excel il codice a barre....

              una volta fatto questo vediamo come modificare i fogli.

              Inoltre ti faccio notare che in excel esiste la funzione se.errore o if.error che ti permette nel caso di formule che danno errore di far visualizzare un qualcosa evitando che compaiono degli errori nel foglio quando non voluti.

              Ciao

              Luca

              #18886 Score: 0 | Risposta

              andrea

                allora praticamente io parto da un prodotto "x" che ha diciamo nome ad esempio "A1234" e tramite un programma convergo questo nome in codice a barre. Se io sono su una cella excel e leggo il codice a barre (con una pistola) in automatico me lo converge nel rispettivo nome. Pertanto se sono su A1 ad esempio e leggo il codice a barre di "x", mi  mette "A1234" in automatico e passa alla cella sotto. L'operazione passaggio codice a barre a "codice prodotto" rispettivo me lo fa in automatico excel senza dover mettere niente, è una funzione sua base. Il fatto è che come dicevo sopra volevo sfruttare il ciò e fare quelle 2 cose segnata con vba se è fattibile. 

                Per la 2 cosa se può aiutare, ovvero x il deposito o prelievo, ora come ora xkè facesse quello che voglio dovrei posizionarmi sulla prima "cella" vuota sotto la colonna "codice prodotto", leggere il codice a barre, che me lo riporta in automatico dentro la cella e poi però devo inserire la quantità io selezionando la cella di fianco. Per questo punto vorrei se possibile, fare in modo che intanto alla lettura non sia obbligato ad essere già in una cella della colonna "codice prodotto" ma che appena la effettuo, inserisse il relativo codice tradotto nella 1 cella libera sotto la colonna "codice prodotto" ; seconda cosa vorrei che appena inserito tale elemento mi uscisse una finestra pop-up che mi chieda di immettere il quantitativo (depositato o prelevato in base al foglio in cui mi trovo) e che successivamente alla conferma me lo inserisse in quantità (depositata o prelevata)

                Ecco la funzione 2 è identica per entrambi i 2 fogli di deposito e prelievo; la 1 di decremento di un'unità vorrei che valesse solo nel caso fossi nel foglio 1 e che magari mi andasse anche sulla riga del prodotto a cui corrisponde il codice letto magari xD...spero di essere stato il più chiaro e specifico possibile

                #18893 Score: 0 | Risposta

                Luca73
                Partecipante
                  58 pts

                  Ciao, ma la scrittura in cella A1 la fa una macro?

                  nel caso basta modificarla e dopo la scrittura,  fare una ricerca di codice e modifica del numero. nel caso bastra una macro molto simile a qulla che abbiamo visto ieri.

                  #18896 Score: 0 | Risposta

                  andrea

                    no non la fa una macro...la scrittura in "A1" o in qualsiasi cella viene fatta nella cella in cui mi trovo da sola appena leggo il codice a barre...se sono in A1 lo mette li, se sono in C100, invece lo mette li.

                    Non fare caso al codice che ho messo nell'altro post...quello era uno trovato su internet in un post guida per i codici a barre...l'ho provato x capire cosa facesse e se andasse ma niente xD...

                    #18901 Score: 0 | Risposta

                    Luca73
                    Partecipante
                      58 pts

                      Ciao a questo punto vado a tentativi.

                      Prova ad inserire questa macro in un foglio e poi leggere un codice a barre in modo che lo scriva nella cella A1 dello stesso foglio 

                      E dimmi cosa succede

                       

                      #18902 Score: 0 | Risposta

                      Luca73
                      Partecipante
                        58 pts

                        Se funziona io creerei un foglio neutro nel qualle far leggere il codice e poi una volta letto chiederei se in ingresso o in uscita in modo da modificare il foglio corretto.

                         

                        #18927 Score: 0 | Risposta

                        andrea

                          Allora dato che è molto complessa e incasinata la mia logica ho pensato di semplificare sfruttando quello che già funziona...

                          Lasciamo stare il punto 1) del decremento di un'unità che si era diciamo più una "chicca" che non qualcosa che migliorava di molto il programma. Allora consideriamo solo il punto 2). Come detto prima, per DEPOSITO e PRELIEVO, ho creato 2 macro grazie a voi, associate ad un bottone che mi consentono di aggiornare l'inventario al relativo prodotto (da CODICE PRODOTTO che ricerca uguale tra le 2 tabelle). Ora vorrei per "velocizzare" e "migliorare" il programma fare quest'ultima cosa se fattibile: 

                          Quando inserisco un dato in "CODICE PRODOTTO" in una delle 2 tabelle di DEPOSITO O PRELIEVO, mi uscisse una finestrella di pop-up che mi chiedesse di inserire un quantitativo, il quale successivamente all' "invio" andasse inserito nella relativa cella della riga in cui ho inserito il cod.prodotto. Questo mi consentirebbe di velocizzare senza dover star li a spostarmi ogni volta a spostarmi con il  mouse nella cella relativa, in quanto all'inserimento (che nel mio caso corrisponde alla lettura del codice a barre che traduce e inserisce in automatico) mi passa alla cella sottostante della colonna sulla quale mi trovavo (che è ovviamente cod.prodotto)...

                          #18930 Score: 0 | Risposta

                          Luca73
                          Partecipante
                            58 pts

                            andrea ha scritto:

                            Quando inserisco un dato in "CODICE PRODOTTO" in una delle 2 tabelle di DEPOSITO O PRELIEVO, mi uscisse una finestrella di pop-up che mi chiedesse di inserire un quantitativo,

                            Usa il comando 

                            inputbox che apre una richiesta di dati.

                             

                            Sub pippo()
                            Dim pluto As String
                            pluto = InputBox("Inserisci una parola", "INSERIMENTO")
                            
                            MsgBox "La parola che hai scritto è " & vbCrLf & pluto
                            
                            End Sub
                            #18937 Score: 0 | Risposta

                            andrea

                              sisi quello si lo avevo capito =). Ora cercherò di essere più specifico.

                              Allora consideriamo ad esempio il foglio DEPOSITI del file che ho messo. Con il comando che hai postato sopra mi chiede il "codice prodotto che voglio inserire" tramite inputbox. Io ora qua leggo un codice a barre e me lo traduce nel relativo codice e me lo mette nella finestrella inputbox (già provato e funziona in da solo). Premuto invio vorrei che cercasse la prima cella libera sulla colonna "CODICE PRODOTTO" (a partire da D5 nel mio caso) e che inserisse il codice inserito li. Successivamente mi chiedesse "QUANTITATIVO DA INSERIRE" e li metto il numero (in questo caso depositato) che dovrà andare nella relativa cella della stessa riga dove è stato inserito il codice prodotto nella colonna "quantità depositata".

                              ho sottolineato quello che vorrei che facesse di preciso. 

                              p.s. posso fare un codice di ricerca dove mi chieda codice prodotto da inputbox e poi me lo cerchi e si posizioni sopra la riga relativa? ---> questo per cercare nell'inventario 

                              #18939 Score: 0 | Risposta

                              andrea

                                sviluppati questi 2 codici che ho appena segnato, posso fare tutto quello che voglio. Nel senso che posso pensare di sviluppare doppia logica. O effettuo depositi e prelievi nei 2 fogli relativi e poi "premo il bottone relativo" che fa tutto il resto. O posso pensare di inserire 2 bottoni nel foglio INVENTARIO e sfruttare solo quello, dove appunto inserito il codice, fà la ricerca e mi va sull'elemento x e poi mi chieda quantità che andrà a togliere o aggiungere.

                                #18951 Score: 0 | Risposta

                                Luca73
                                Partecipante
                                  58 pts

                                  Visto che smanetti un po' con il VBA non mi sembra così difficile quello che chiedi.

                                  Per trovare la prima cella libera usa Range("D5").end(xldown) che ti trova l'ultima occupata poi con un .offset(0,1) consideri la prima libera e lì gli fai scrivere il contenuto della inputbox. Successivamente un'altra inputbox che ti chiede il numero e lo scrivi nella colonna che ti interessa.

                                  un ulteriore suggerimento (oltre a end e offset) che potrebbe esserti utile è set che pertmette di assgnare ad una variabile un'entità quae un range.

                                  Se scrivi pippo=Range("A1") pippo varra il valore scritto in A1  e sarà una stringo ovvero un numero...

                                  se invece scrivi  set pippo=Range("A1") pippo varra la cella A1 con tutte le sue caratteristiche 

                                  pertanto potresti scrivere 

                                  set pippo= Range("D5").end(xldown).offset(0,1)  e pippo sarà la cella in cui vuoi scrivere il codice e 

                                  pippo.offset(0, x) dove x vale il numero giusto sarà la cela in cui vuoi scrivere le quantità

                                  Scrivi il codice e se hai problemi specifici chiedi allegando codice e fogli su cui lavora.

                                  Ciao

                                  Luca

                                   

                                  #18957 Score: 0 | Risposta

                                  andrea

                                    Grazie per le risposte intanto, la realtà è che so poco di vba xD...ci smanetto dietro si, ma diciamo attingendo tante info di qua e di là...

                                    Comunque sto sviluppando il codice che voglio pian piano. Per ora sono arrivato a creare una ricerca, nella quale leggo il codice a barre che viene tradotto e inserito in una finestrella di inputbox, e mi restituisce dopo una ricerca se è presente o meno tale prodotto nel mio inventario. Ho optato x la cancellazione dei fogli di prelievo e deposito, perchè voglio fare tutto sul foglio principale dell'inventario tramite bottoni con relativa macro. Vi allego il codice che ho fatto e vi chiedo se potete aiutarmi a completarlo con 2 logiche differenti che così poi ho finito.

                                    Sub Elencoinventario_Click()
                                    Dim codice As String
                                    Dim Trova As Range, Intervallodiricerca As Range
                                    Dim IndirizzoTrovato As String
                                    codice = InputBox("Inserisci codice prodotto", "INSERIMENTO")
                                    
                                    Set Intervallodiricerca = ActiveSheet.Columns(2)
                                    
                                    Set Trova = Intervallodiricerca.Cells.Find(what:=codice, LookAt:=xlWhole)
                                    
                                    
                                    If Trova Is Nothing Then
                                        
                                        IndirizzoTrovato = codice & " non è presente nell'inventario "
                                    Else
                                       
                                            IndirizzoTrovato = codice & " codice presente "
                                    End If
                                    MsgBox IndirizzoTrovato
                                    
                                    Set Intervallodiricerca = Nothing
                                    Set Trova = Nothing
                                    
                                    End Sub
                                    

                                    A partire da questo codice vorrei che nel caso in cui trovi il codice (se nn lo trova va bene che mi dia il messaggio)

                                    1) andasse innanzitutto nella riga relativa al codice trovato e che mi estrapolasse e mettesse a messaggio la quantità presente relativa -> sfrutto per il "tasto effettua ricerca"

                                    2) identica alla 1 praticamente, solo che una volta andato nella riga relativa alla cella contenente il codice prodotto trovato, mi chiedesse il quantitativo (tramite finestra inputbox che sarà prelevato o depositato) e che successivamente lo aggiungesse/detrarrebbe al quantitativo disponibile in base alla mia operazione (p.s. se il quantitativo nel caso di prelievo immesso è maggiore di quello disponibile mi deve dare un messaggio di errore) -->sfrutto per tasti "EFF.DEPOSITO" O "EFF.PRELIEVO".

                                    per il punto 2, per quanto riguarda l'inputbox e messaggi vari so farlo, solo che ho difficoltà ad estrapolare la riga relativa del cod.prodotto per poi fare le varie operazioni tra cui "verifica e c'è abbastanza disponibilità" e successiva somma/sottrazione...cioè essenzialmente mi servirebbe la parte del codice che dal codice individuato e la riga sua mi "dica" la relativa "cella della quantità" sulla quale poi fare le varie operazioni

                                    Per facilitare il tutto e la relativa compresione dei codici in vostra risposta mettiamo il seguente caso:

                                            A       B

                                    1    ccc      2  

                                    2    ddd     1                  A -> codici    B -> quantità

                                    3    eee     5

                                    Io riesco tramite il codice postato a verificare se è presente o no, mettiamo cerco il codice ccc, se c'è come faccio ad andare nella riga relativa (1 in questo caso) e poi avere il relativo valore quantitativo (della colonna B nella stessa riga del codice trovato) per poi poterci fare varie operazioni...è questo quello che voglio

                                     

                                    #18960 Score: 0 | Risposta

                                    Luca73
                                    Partecipante
                                      58 pts

                                      Hai già implementato un qualcosa di analogo quando avevamo analizzato il primo problema

                                      Ti riposto qui i suggerimeni che ti avevo dato allora

                                      Con il tuo codice sopra scritto hai gà trovato la cella 

                                      Set Trova = Intervallodiricerca.Cells.Find(what:=codice, LookAt:=xlWhole)

                                      Ti basta selezionarla 

                                      Trova.select

                                      La relativa quantità attualwe se in colonna B (e i codici in A)

                                      quantitàattuale=Trova.offset(0,1).value

                                      Per Chiedere il nuovo quantitativo usi una inputbox e poi lo reinserisci. 

                                      Trova.offset(0,1).Formula=Inputbox("inserisci Nuovo Valore") * 1
                                      

                                      Nella riga sopra inserisce il nuovo valore altrimenti lo fai calcolare come somma/differenza tra il precedente valore e l'inputbox

                                      Trova.offset(0,1).Formula=Inputbox("inserisci Nuovo Valore") * 1+Trova.offset(0,1).value
                                      

                                      Ho inserito un *1 in quanto l'inputbox ti estrae una stringa e devi convertirlo in numero.

                                      Ciao

                                      Luca

                                      #19044 Score: 0 | Risposta

                                      zukka79
                                      Partecipante

                                        scusa non avevo letto...mi sono messo da solo e sono riuscito a fare quel che volevo. Allego il file se a qualcuno può interessare

                                        Allegati:
                                        You must be logged in to view attached files.
                                      Login Registrati
                                      Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
                                      Rispondi a: operazioni dopo lettura codice a barre
                                      Gli allegati sono permessi solo ad utenti REGISTRATI
                                      Le tue informazioni: