Ir ao conteúdo
  • Cadastre-se
Liége Fernandes

Duvida Excel Controle de Estoque

Recommended Posts

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

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
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
 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×