Ir ao conteúdo
  • Cadastre-se

Duvida Excel Controle de Estoque


Posts recomendados

Boa tarde.

 

Por favor tenho uma planilha de controle de estoque onde:

 

saldoestoque = saldoestoque + entrada - saida

 

Que só da para fazer via codigo VBA, pois soma o próprio valor do campo.

 

tenho uma aba principal com os saldos:

 

cod produto    nome       saldo

 

01                   caneta     23

03                   clips         40

04                   borracha  12

 

 

uma aba de entrada de produtos:

 

cod prod      nome         qte 

 

03                clips           60

01                caneta       10

 

a aba de saida é igual a da entrada.

 

Por favor sabem como seria este codigo VBA?

 

Obrigada.

 

Liege

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Olá, Liege

 

Instale o código abaixo no módulo da planilha "entrada"

Private Sub Worksheet_Change(ByVal Target As Range)'ENTRADA Dim k As Long  If Target.Count > 1 Then Exit Sub  If Target.Column > 3 Or Application.CountA(Cells(Target.Row, 1).Resize(, 3)) < 3 Then Exit Sub   With Sheets("estoque")    k = .[A:A].Find(Cells(Target.Row, 1).Value, lookat:=xlWhole).Row    .Cells(k, 3) = .Cells(k, 3) + Cells(Target.Row, 3)   End WithEnd Sub



Instale o código abaixo no módulo da planilha "saída"

Private Sub Worksheet_Change(ByVal Target As Range)'SAÍDA Dim k As Long  If Target.Count > 1 Then Exit Sub  If Target.Column > 3 Or Application.CountA(Cells(Target.Row, 1).Resize(, 3)) < 3 Then Exit Sub   With Sheets("estoque")    k = .[A:A].Find(Cells(Target.Row, 1).Value, lookat:=xlWhole).Row    .Cells(k, 3) = .Cells(k, 3) - Cells(Target.Row, 3)   End WithEnd Sub



funcionamento - após preencher "cod prod", "nome" e "qte", em qualquer ordem, na planilha "entrada" ou na planilha "saída", o código efetuará a operação correspondente na planilha "estoque"

Para instalar códigos em módulo de planilha:
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar
 

Link para o comentário
Compartilhar em outros sites

Osvaldo,

 

Boa noite e muito obrigada.

 

Funcionou perfeitamente.

 

Só preciso tirar uma dúvida, pois precisei adaptar para minha planilha que é maior, e não entendi o comando Application.CountA(Cells(Target.Row, 1).Resize(, 3)) < 3

 

Nele o que são os nrs 1, 3, 3 respectivamente?

 

Obrigada mais uma vez.

 

Liege

Link para o comentário
Compartilhar em outros sites

Só preciso tirar uma dúvida, pois precisei adaptar para minha planilha que é maior, e não entendi o comando Application.CountA(Cells(Target.Row, 1).Resize(, 3)) < 3

 

Nele o que são os nrs 1, 3, 3 respectivamente?

 

Liege, boa noite.

 

Este comando é uma trava que só libera o código para efetuar o lançamento na planilha destino se estiverem preenchidas todas as células de um registro, no seu exemplo, no intervalo "A:C", ou seja , 3 células na linha da célula ativa.

Então o comando verifica se no intervalo "A:C" as 3 células que correspondem a um registro estão preenchidas. Se sim o código prosseguirá, se não, o código encerrará a execução.

Application.CountA - este comando equivale à função de planilha CONT.VALORES (conta células não vazias).

(Cells(Target.Row, 1) - este comando determina a célula de origem do intervalo a ser verificado, é a célula da coluna "A", representada pelo número 1, na linha em que foi feita a última inserção de dados, representada por Target.Row (a linha da célula ativa).

.Resize(, 3)) - este comando estende o intervalo, a partir da célula de origem, para as 3 células a serem verificadas, ou seja, colunas "A", "B" e "C" da linha onde está a célula ativa.

A sintaxe é Resize(linhas, colunas). Neste seu caso não haverá acréscimo de linha, pois o intervalo estendido será na própria linha, e haverá acréscimo de 3 colunas, então o comando ficaria Resize(0,3). Como a omissão do parâmetro é considerada como valor zéro para o parâmetro, então basta colocar (,3) >>> zéro linhas e 3 colunas.

Por ex. se a sua tabela vai da coluna "A" até e coluna "H" altere para Resize(,8).

< 3 - por fim a comparação, se houver menos de 3 células preenchidas no intervalo o código encerrará a execução

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...