Codice VBA per creare fattura dopo scarico materia



  • Codice VBA per creare fattura dopo scarico materia
    di marco_budin (utente non iscritto) data: 11/09/2016 08:29:38

    Ciao a tutti, ho creato uno excel per scarico/ carico dei prodotti con lettore ottico. Ma quello che vorrei fare è selezionare una cella (J113) cliccare con un lettore ottico sul prodotto, appare la cifra e senza fare INVIO o OK si autoscarica e si autocancella pronto per poter accettare di nuovo un altro codice a barre. è fattibile? io attualmente ho creato una Macro che quando la schiaccio scarica il prodotto (Carico). Ho provato a fare un altra macro per lo scarico automatico, ma devo comunque dare OK (
     
    Sub carico()
    
    ' carico Macro
    
        Sheets("Fatturazione neuro stroke").Select
        Columns("L:L").Select
        Selection.Copy
        Columns("C:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("stroke").Select
        Range("j115").Select
        ActiveCell.FormulaR1C1 = "1"
        Range("j113:j113").Select
    End Sub
    -------------------------------------------------------------
    Private Sub Worksheet_(ByVal Target As Range)
        Application.ScreenUpdating = False
        If Not Intersect(Target, Range("j115")) Is Nothing Then
            Columns("n:n").Copy
            Columns("C:C").PasteSpecial Paste:=xlPasteValues
            Sheets("stroke").Select
            End If
        Application.ScreenUpdating = True
    End Sub



  • di patel data: 11/09/2016 08:55:48

    la seconda macro deve stare nel modulo del foglio ed avere il nome così
    Private Sub Worksheet_Change(ByVal Target As Range)
    e non
    Private Sub Worksheet_(ByVal Target As Range)




  • Codice VBA per creare fattura dopo scarico materia
    di marco_budin (utente non iscritto) data: 11/09/2016 10:48:39

    Ciao Patel, ti ringrazio per la tua correzione. Solo che adesso si presenta un problema. Perché appena do l'INVIO esegue il codice. ma il codice lo deve eseguire non nella cartella "stroke" ma nella sotto cartella "Fatturazione neuro stroke" e poi tornare nella cella J113 della sotto cartella "stroke". ho provato a fare il codice, ma non funziona. Infatti il codice che ti ho scritto per primo non funziona, invece la macro creata (il secondo codice che ti ho copiato) funziona.
    Praticamente il codice è perfetto quello del Change, ma non esegue la macro correttamente. Spero che tu possa aiutarmi (ho allegato anche il file)

    saluti
    Marco
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        If Not Intersect(Target, Range("j113")) Is Nothing Then
            Sheets("Fatturazione neuro stroke").Select
        Columns("L:L").Select
        Selection.Copy
        Columns("C:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("stroke").Select
        Range("j115").Select
        ActiveCell.FormulaR1C1 = "1"
        Range("j113:j113").Select
            End If
        Application.ScreenUpdating = True
    End Sub
    
    -----------------------------------------------------------------------
    Sub carico()
    '
    ' carico Macro
    '
    
    '
        Sheets("Fatturazione neuro stroke").Select
        Columns("L:L").Select
        Selection.Copy
        Columns("C:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("stroke").Select
        Range("j115").Select
        ActiveCell.FormulaR1C1 = "1"
        Range("j113:j113").Select
    End Sub



  • di patel data: 11/09/2016 18:00:07

    Io mi sono limitato a correggere la tua macro senza sapere cosa deve fare, non posso aiutarti se non mi dici a parole semplici quello che vuoi che faccia





  • di marco_budin data: 11/09/2016 19:07:47

    Scusami patella, ti spiego, allora clicco bella cella j113 della cartella "stroke" con L invio in automatico
    - copia la colonna L:L della sotto cartella "fatturazione neuro stroke" e incolla i valori nella colonna C:C sempre della sottocartella "fatturazione neuro stroke".
    - poi torna nella sotto cartella "stroke" imposta il numero 1 nella cella j115 e si riposiziona nella cella j113.

    Però appunto nel file che ti ho allegato vedi che non funziona...

    Questo codice appunto va su 2 sottocartella di Excel... E non so se è fattibile.
    Ti ringrazio Anticipatamente e in attesa della tua risposta ti auguro una buona serata
    Marco
     
    nspose:=False
        Sheets("stroke").Select
        Range("j115").Select
        ActiveCell.FormulaR1C1 = "1"
        Range("j113:j113").Select
            End If
        Application.ScreenUpdating = True
    End Sub



  • di marco_budin data: 11/09/2016 19:38:48

    Scusami Patel, ti spiego, allora clicco bella cella j113 della cartella "stroke" con L invio in automatico
    - copia la colonna L:L della sotto cartella "fatturazione neuro stroke" e incolla i valori nella colonna C:C sempre della sottocartella "fatturazione neuro stroke".
    - poi torna nella sotto cartella "stroke" imposta il numero 1 nella cella j115 e si riposiziona nella cella j113.

    Però appunto nel file che ti ho allegato vedi che non funziona...

    Questo codice appunto va su 2 sottocartella di Excel... E non so se è fattibile.
    Ti ringrazio Anticipatamente e in attesa della tua risposta ti auguro una buona serata
    Marco
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        If Not Intersect(Target, Range("j113")) Is Nothing Then
            Sheets("Fatturazione neuro stroke").Select
        Columns("L:L").Select
        Selection.Copy
        Columns("C:C").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("stroke").Select
        Range("j115").Select
        ActiveCell.FormulaR1C1 = "1"
        Range("j113:j113").Select
            End If
        Application.ScreenUpdating = True
    End Sub
    
    



  • di patel data: 11/09/2016 22:39:17

    prova così
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        If Not Intersect(Target, Range("j113")) Is Nothing Then
          With Sheets("Fatturazione neuro stroke")
            .Columns("L:L").Copy
            .Columns("C:C").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
             :=False, Transpose:=False
          End With
          Range("j115") = "1"
          Range("j113").Select
        End If
        Application.ScreenUpdating = True
    End Sub






  • di marco_budin data: 12/09/2016 18:37:05

    Ciao Patel, ti ringrazio per il grande aiuto che mi hai dato. Grazie per il tuo aiuto e per la tua disponibilità nell'aiutarmi. Spero alla prossima, ti auguro una buona serata e a presto
    Marco