Boa tarde,
Necessito da vossa importante ajuda!
Tenho em 2 separadores de Excel, denominados Entrada e o outro Saída, uma única Tabela.
Numa das Tabelas, tenho o Número do Produto e o Total de Produtos, em Stock:
Na 2ª Tabela, que se encontra no outro separador, tenho Pedidos para certas Quantidades de Produtos, ordenados pelas datas de Entrega.
O que pretendo é criar uma macro, associada a um botão, para que percorra cada Produto na Tabela de Entrada(stock) e procure se existe o Produto na Tabela de Saída (pedidos).
Após encontrar o Produto e se o existir o mesmo na Tabela de Saída, quero que vá colocando no Status, a Quantidade Pendente se o total de peças do produto e pendentes for <= às peças em Stock.
Ou seja, para o exemplo de um Produto em concreto, verifico que na Tabela Entrada, tenho em STOCK, o valor de 37 unidades do PRODUTO_135,
Pretendo que a Macro preencha o STATUS da seguinte forma:
Ou seja, à variável de unidades STOCK, para cada Produto, vai ser Retirada para completar pedidos..
Já desenvolvi o código abaixo:
Option Explicit
Sub MacroVerifica()
Application.ScreenUpdating = False
ThisWorkbook.Activate
'DEFINIR LIVRO ENTRADA E SAÍDA
Dim WsIN As Worksheet: Set WsIN = Sheets("Entrada")
Dim WsOUT As Worksheet: Set WsOUT = Sheets("Saída")
'GUARDAR NÚMERO LINHAS PREENCHIDAS EM VARIÁVEL E DEFINIR INICIO LINHA 2 - LIVRO ENTRADA
Dim NLinIN As Double: NLinIN = WsIN.Range("A1048575").End(xlUp).Row
Dim lIN As Double: lIN = 2
'GUARDAR NÚMERO LINHAS PREENCHIDAS EM VARIÁVEL E DEFINIR INICIO LINHA 2 - LINHA SAÍDA
Dim NLinOUT As Double: NLinOUT = WsOUT.Range("A1048575").End(xlUp).Row
Dim lOUT As Double: lOUT = 2
Dim STOCK As Integer
'Dim QTDPRODUTO As Integer
'VARÍAVEL PRODUTO ÚNICO NO LIVRO ENTRADA COM QUANTIDADE TOTAL PEÇAS
Dim QTDProduto As Variant: QTDProduto = Trim(UCase(WsIN.Cells(2, 1).Value))
'FAZ ATÉ ULTIMA LINHA DA TABELA ENTRADA DE PEÇAS EM STOCK
Do While lIN <= NLinIN
'SE PEÇAS EM STOCK FOR MAIOR QUE ZERO FAZ...
If STOCK >= 0 Then
'PARA CADA LINHA QUE ENCONTRAR NA TABELA SAÍDA COM O PRODUTO CORRESPONDENTE AO DA ENTRADA..
For lOUT = 1 To NLinOUT
'VERIFICA SE QUANTIDADE PEDIDO É MENOR QUE QUANTIDADE DE PRODUTO EM STOCK
If QTDProduto <= STOCK Then
'SE FOR SUPERIOR ENTÃO TEM PRODUTOS PARA COMPLETAR O PEDIDO E COLOCA
'qual codigo aqui???????
' DEPOIS VALOR DE STOCK SERÁ...??
STOCK = STOCK - QTDProduto
'VERIFICA SE QUANTIDADE PEDIDO É MAIOR QUE QUANTIDADE DE PRODUTO EM STOCK
ElseIf QTDProduto > STOCK Then
'SE VALOR DE PRODUTOS PEDIDO FOR SUPERIOR AO STOCK APRENSENTA PEÇAS DISPONIVEIS APENAS EM STOCK
QTDProduto = QTDProduto - STOCK
'Se não tiver Peças em Stock, aparece 0 produtos
Else
QTDProduto = 0
End If
Next lIN
Loop
End Sub
O código tem erros, mas acredito que esteja lá a ideia, daí que peço pf se me podem dar uma valente ajuda!!
Em anexo envio o Excel, se me poderem o reenviar com o código correcto era algo TOP!!!
Obrigado!
Um grande abraço,
Pedro
Postado : 14/03/2017 2:50 pm