giovedì 22 febbraio 2018

dal foglio excel con il dettaglio delle fatture crea foglio inventario

' vba -  dal foglio excel con il dettaglio delle fatture crea foglio inventario

'

Sub creaInventario()

'

On Error Resume Next

'

 

Dim quanterighe, contarighe, foglioleggi, sigla, articolo, quantita, posizione, importo, codice

Dim dbquantita, dbimporto, colonnarticoloazienda, scolartazienda, articoloazienda

Dim prezzomedioacquisto

Dim fogliodb, righedb

Set foglioleggi = Sheets("fatture")

Set fogliodb = Sheets("inventario")

Dim scolArticolo, scolQta, scolImp, scolsigla, scolcodice, scolprm

'

'

Dim colonnaSigla, colonnaArticolo, ColonnaQuantita, colonnaImporto, ColonnaCodice

Dim colonnadtft, colonnanrft, colonnaultimoscarico, scoldtft, scolnrft, scolulsca

'

colonnaSigla = "A"

colonnaArticolo = "B"

ColonnaQuantita = "e"

colonnaImporto = "G"

colonnarticoloazienda = "O"

colonnadtft = "K"

colonnanrft = "J"

colonnaultimoscarico = "P"

'

'

'

scolcodice = "A"

scolsigla = "B"

scolArticolo = "C"

scolQta = "D"

scolImp = "E"

scolartazienda = "F"

scolprm = "G"

'

scoldtft = "H"

scolnrft = "I"

scolulsca = "J"

'

fogliodb.Cells(1, scolcodice).Value = "codice"

fogliodb.Cells(1, scolsigla).Value = "sigla"

fogliodb.Cells(1, scolArticolo).Value = "articolo"

fogliodb.Cells(1, scolQta).Value = "ddt_qta"

fogliodb.Cells(1, scolImp).Value = "ddt_valore"

fogliodb.Cells(1, scolprm).Value = "pr_medio_acq"

fogliodb.Cells(1, scolartazienda).Value = "articolo_azienda"

fogliodb.Cells(1, scoldtft).Value = "dt_ft"

fogliodb.Cells(1, scolnrft).Value = "nr_ft"

fogliodb.Cells(1, scolulsca).Value = "ultimo_scarico"

'

quanterighe = Range(foglioleggi.UsedRange.Cells(foglioleggi.UsedRange.Rows.Count, 1).Address).Row

'

contarighe = 2

While contarighe <= quanterighe

      sigla = Trim(foglioleggi.Cells(contarighe, colonnaSigla).Value)

      articolo = Trim(foglioleggi.Cells(contarighe, colonnaArticolo).Value)

      quantita = foglioleggi.Cells(contarighe, ColonnaQuantita).Value

      importo = foglioleggi.Cells(contarighe, colonnaImporto).Value

      articoloazienda = foglioleggi.Cells(contarighe, colonnarticoloazienda).Value

      codice = sigla & articolo

      If Len(articolo) > 0 Then

         If Application.IsError(Application.Match(codice, fogliodb.Range("A:A"), 0)) Then

            'ActiveSheet.Cells(riga, "C").ClearContents

            righedb = Range(fogliodb.UsedRange.Cells(fogliodb.UsedRange.Rows.Count, 1).Address).Row

          righedb = righedb + 1

         fogliodb.Cells(righedb, scolcodice).Value = "'" & codice

         fogliodb.Cells(righedb, scolsigla).Value = "'" & sigla

         fogliodb.Cells(righedb, scolArticolo).Value = "'" & articolo

         fogliodb.Cells(righedb, scolartazienda).Value = "'" & articoloazienda

         '

         fogliodb.Cells(righedb, scoldtft).Value = "'" & foglioleggi.Cells(contarighe, colonnadtft).Value

         fogliodb.Cells(righedb, scolnrft).Value = "'" & foglioleggi.Cells(contarighe, colonnanrft).Value

         fogliodb.Cells(righedb, scolulsca).Value = "'" & foglioleggi.Cells(contarighe, colonnaultimoscarico).Value

        

         '

         posizione = righedb

         If IsNumeric(quantita) = True Then

            fogliodb.Cells(righedb, scolQta).Value = quantita

         Else

             fogliodb.Cells(righedb, scolQta).Value = 0

         End If

         If IsNumeric(importo) = True Then

            fogliodb.Cells(righedb, scolImp).Value = importo

         Else

            fogliodb.Cells(righedb, scolImp).Value = 0

         End If

      Else

         posizione = Application.Match(codice, fogliodb.Range("A:A"), 0)

'

         dbquantita = fogliodb.Cells(posizione, scolQta).Value

         dbimporto = fogliodb.Cells(posizione, scolImp).Value

         If IsNumeric(quantita) = True Then

            dbquantita = dbquantita + quantita

         End If

         If IsNumeric(importo) = True Then

            dbimporto = dbimporto + importo

         End If

         fogliodb.Cells(posizione, scolQta).Value = dbquantita

         fogliodb.Cells(posizione, scolImp).Value = dbimporto

         fogliodb.Cells(posizione, scoldtft).Value = "'" & foglioleggi.Cells(contarighe, colonnadtft).Value

         fogliodb.Cells(posizione, scolnrft).Value = "'" & foglioleggi.Cells(contarighe, colonnanrft).Value

         fogliodb.Cells(posizione, scolulsca).Value = "'" & foglioleggi.Cells(contarighe, colonnaultimoscarico).Value

         '

         End If

         '

         '

      End If

      contarighe = contarighe + 1

Wend

' calcola prezzo acquisto

contarighe = 2

quanterighe = Range(fogliodb.UsedRange.Cells(fogliodb.UsedRange.Rows.Count, 1).Address).Row

While contarighe <= quanterighe

      dbquantita = fogliodb.Cells(contarighe, scolQta).Value

      dbimporto = fogliodb.Cells(contarighe, scolImp).Value

      If IsNumeric(dbimporto) = True And IsNumeric(dbquantita) = True Then

         If dbimporto > 0 And dbquantita > 0 Then

            prezzomedioacquisto = dbimporto / dbquantita

            fogliodb.Cells(contarighe, scolprm).Value = CCur(prezzomedioacquisto)

         End If

      End If

      contarighe = contarighe + 1

Wend

'

'

fogliodb.Activate

Columns("A:F").Select

    ActiveWorkbook.Names.Add Name:="dbinventario", RefersToR1C1:= _

        "=inventario!C1:C10"

'

End Sub

 

Nessun commento:

Posta un commento