Gestione Dispensa



  • Gestione Dispensa
    di Frapao (utente non iscritto) data: 21/10/2014 18:11:01

    Salve a tutti,
    ho creato un semplice foglio con excel 2010 per gestire una dispensa, ho creato tante macro, per quanto sono i prodotti da gestire, con altrettanti pulsanti di comando, un pulsante per Caricare le quantità del prodotto, un'altro pulsante per Scaricare il prodotto e un'altro pulsante per Resettare il tutto, fin qui nessun problema. Il problema nasce che quando inserisco una nuova riga devo rifare un'altra macro con nuovi target, data la mia ignoranza e non conoscendo il sistema di potere sfruttare una macro di ogni singolo pulsante per inserire il carico, scarico e reset su ogni nuova riga, ho cercato su Internet ma non ho trovato nessun esempio che facesse al caso mio, mi rivolgo a qualcuno esperto che mi aiuti a risolvere questo quesito. Grazie...
    P.S. Invio il codice VBA dei tre pulsanti
     
    Sub Carico5() 'Pulsante per il Carico del prodotto
    On Error GoTo SALTA
    Application.ScreenUpdating = False
    Dim Fg1 As foglio1
    Dim Rg As range
    Dim Rg1 As range
    Dim Rg2 As range
    Dim Rg3 As range
    Dim Rg4 As range
    Dim rg5 As range
    Set Fg1 = foglio1
    Set Rg = Fg1.range("AB5:AC5")
    Set Rg1 = Fg1.range("J5:K5")
    Set Rg2 = Fg1.range("F5")
    Set Rg3 = Fg1.range("H5")
    Set Rg4 = Fg1.range("E5")
    Set rg5 = Fg1.range("A5")
     Dim Message, Title, Default, MyValue
    Message = ("Immettere la quantità di CARICO del prodotto " + foglio1.range("A5"))
    Title = (rg5)
    Default = "1"
    MyValue = InputBox(Message, Title, Default)
    Rg1.Copy
            Rg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Rg1.ClearContents
         Rg2 = range("H5").Value + MyValue
    SALTA:
    Rg.Select
        Application.CutCopyMode = False
        Rg.Select
        Selection.Copy
        Rg1.Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Rg.ClearContents
        Rg4.Select
    Application.ScreenUpdating = True
    End Sub
    
    Sub Scarico5() 'Pulsante per lo Scarico del prodotto
    On Error GoTo SALTA
    Dim Fg1 As foglio1
    Dim Srg, Srg1, Srg2, Srg3, Srg4 As range
    Set Fg1 = foglio1
    Set Srg = Fg1.range("AD5:AE5")
    Set Srg1 = Fg1.range("J5:K5")
    Set Srg2 = Fg1.range("A5")
    Set Srg3 = Fg1.range("E5")
    Set Srg4 = range("AD5")
    Application.ScreenUpdating = False
     Dim Message, Title, Default, MyValue
    Message = ("Immettere la quantità di SCARICO del prodotto " + foglio1.range("A5"))
    Title = (Srg2)
    Default = "1"
    MyValue = InputBox(Message, Title, Default)
    Srg1.Copy
    Srg.Select
            Srg.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
                Srg1.ClearContents
                Worksheets("Foglio1").range("J5") = Srg4.Value + MyValue
          Srg4.Select
        Selection.ClearContents
        Srg3.Select
        GoTo ok
    SALTA:
    Srg.Copy
    Srg1.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    ok:
    Srg3.Select
    Application.ScreenUpdating = True
    End Sub
    
    Sub Reset5() 'Pulsante per il Reset
    Dim Msg, Style, Title, Response, MyString
    Msg = "Eliminare i record di Carico e Scarico " + foglio1.range("A5") + " ?"
    
    Style = vbYesNo + vbCritical + vbDefaultButton2
    Title = foglio1.range("A5")
    Response = MsgBox(Msg, Style, Title, Help, Ctxt)
    If Response = vbYes Then
        MyString = "Sì"
        GoTo ok
    Else
        MyString = "No"
        GoTo esco
        End If
    ok:
        range("F5,J5").Select
        Selection.ClearContents
        range("E5").Select
    esco:
    range("E5").Select
    End Sub



  • di Lucas87 data: 21/10/2014 18:14:30

    Ciao
    Del codice non ce ne facciamo nulla.
    Allega il file e spiega come usarlo e cosa manca



  • di Frapao data: 21/10/2014 18:25:45

    Ciao, ho inviato il file, quando lo apri il funzionamento è semplice....



  • di Frapao data: 21/10/2014 20:33:34

    Come usarlo, basta cliccare in corrispondenza di una qualsiasi riga di ogni prodotto il pulsante Carica, si apre un InputBox e inserire la quantità, dare invio dalla tastiera o cliccare su OK e nella colonna Scorta esce la somma della quantità caricata, sempre nella stessa riga si clicca il pulsante Scarica, si apre un'altro InputBox inserisco la quantità e do invio e nella colonna Scorta mi sottrae la quantità mentre nella colonna scarico mi somma quante volte ho scaricato lo stesso prodotto. Il pulsante Reset mi cancella le quantità immesse partendo da zero. Si può fare tutto questo procedimento con solo tre pulsanti? E inserendo un'altro pulsante per creare nuove righe? Pensavo di farlo selezionando la cella del prodotto corrispondente e cliccare su un pulsante Carica, Scarica o Reset...Senza mettere tutti questi pulsanti...Grazie!



  • di Zer0Kelvin data: 21/10/2014 20:58:48

    MIO DIO!
    E' una sofferenza solo immaginare tutta la faticaccia inutile che hai fatto...
    Bastavano 3 macro! (4 col reset generale)
    Comunque, si potrebbe organizzare la cosa così:
    - Facendo click o doppio click su una voce della lista, compare una form che permette di scegliere l'operazione da compiere ed eventualmente inserire il valore di carico/scarico.
    Provo a buttare giù qualcosa...
    Ciao.



  • di Frapao (utente non iscritto) data: 21/10/2014 21:15:16

    Lo so che è una faticaccia, ma non conoscendo il procedimento e non conoscendo a fondo tutto il linguaggio sul vba succedono queste cose... cmq grazie per la tua gentilezza...



  • di Zer0Kelvin data: 21/10/2014 22:37:06

    Ciao.
    Ho allegato il file con le modifiche.
    Non ci sono pulsanti; per attivare le funzioni devi fare doppio click sul nome di un prodotto qualsiasi e poi scegliere una delle opzioni disponibili.
    Per aggiungere o togliere voci dalla lista non devi modificare nulla nel codice; è solo necessario che non ci siano celle vuote in mezzo alla lista.
    Se hai bisogno di chiarimenti sono a disposizione...



  • di Frapao data: 21/10/2014 23:21:00

    Perfetto sei un genio non ci sarei mai arrivato!!!
    Ma se volessi mettere un pulsante che mi crei in automatico una nuova riga o aggiungere altre righe si può fare?



  • di Zer0Kelvin data: 21/10/2014 23:57:15

    Si può fare, ma non credo che ne valga la pena.
    Per farlo a mano basta selezionare la riga e trascinare in basso; perchè vorresti utilizzare un pulsante?

    PS: Se devi utilizzare delle macro è meglio non unire le celle; le celle unite provocano spesso degli errori di esecuzione.


  • Gestione Dispensa
    di Frapao (utente non iscritto) data: 22/10/2014 09:05:14

    In effetti penso che non vale la pena creare altre righe...Per le celle unite ho sempre fatto dei piccoli fogli con macro e non mi hanno mai dato problemi...Comunque grazie ancora per il tuo grande aiuto...Alla prossima! Ciao



  • di Frapao data: 22/10/2014 09:10:04