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
Boa noite Pedro,
Teste o código que montei, veja se o resultado é o desejado.
O código está no Módulo1.
Att,
Olá Bruno,
Está a cumprir com o que eu preciso!
Já me deu um grande avanço, agora continuarei a desenvolver mais!
Um ABRAÇO de Obrigado!