' 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