Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Otimizar macro pra diminuir " IF "

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Otimizar macro pra diminuir " IF "   Sex Set 12, 2014 3:36 pm

Bom dia pessoal do forum

Estou com um problema em uma macro, onde ela está muito extensa e pouco "inteligente"

Tenho uma planilha que faz o "check in" dos produtos que chegam na empresa, e outra de controle de estoque e quero que seja feito a adição da mercadoria do chek in para o estoque.

Neste código estou pegando o produto e verificando seu nome, por exemplo, "arroz". Se ele for arroz, então a macro abre a planilha do estoque, pega a célula da frente do arroz (os produtos do estoque estão na coluna "A", suas quantidades estão na coluna "B") e soma a quantidade digitada na célula H8.

Código:
Sub Checklist_para_estoque()
Dim produto, exp_mi As String
Dim quantidade As Double
Sheets("Check List Transporte").Select
produto = Range("b8").Value
exp_mi = Range("a9").Value
quantidade = Range("h8").Value




If Range("C4").Value = "ORIGEM:" Then




    If produto = "Produto 1" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B16").Value = quantidade + Range("B16").Value
       ActiveWorkbook.Save
       ActiveWindow.Close
    
ElseIf produto = "Produto 2" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B17").Value = quantidade + Range("B17").Value
       ActiveWorkbook.Save
       ActiveWindow.Close
      
ElseIf produto = "Produto 3" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B18").Value = quantidade + Range("B18").Value
       ActiveWorkbook.Save
       ActiveWindow.Close
      
ElseIf produto = "Produto 4" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B19").Value = quantidade + Range("B19").Value
       ActiveWorkbook.Save
       ActiveWindow.Close




ElseIf produto = "Produto 5" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B20").Value = quantidade + Range("B20").Value
       ActiveWorkbook.Save
       ActiveWindow.Close








[....]




'Tenho q digitar produto por produto...

'


ElseIf produto = "Produto 124" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B137").Value = quantidade + Range("B21").Value
       ActiveWorkbook.Save
       ActiveWindow.Close




ElseIf produto = "Produto 125" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B138").Value = quantidade + Range("B22").Value
       ActiveWorkbook.Save
       ActiveWindow.Close




      
ElseIf produto = "Produto 126" Then
       Workbooks.Open ("C:\Users\Documents\controle_estoque.xls")
       Sheets("Saldo Total").Select
       Range("B139").Value = quantidade + Range("B139").Value
       ActiveWorkbook.Save
       ActiveWindow.Close
      


      
Else
End If      
Else
End If
End Sub

Queria saber como automatizar essa procura, sem precisar especificar a célula na frente do produto do estoque, pois são muitos produtos e se, por exemplo, eu tiver que adicionar algum produto no meio destes, eu teria também que mudar todas as referencias de baixo

Seria um código que compara o nome do produto do check in com o nome do produto no estoque (Coluna "A"), se eles forem iguais, a célula referente ao produto no estoque é selecionada, em seguida a seleção passa para a célula da coluna seguinte (Coluna "B") e é acrescentado nela, a quantidade da célula H8

Se alguém souber por favor me ajuda.


Última edição por fdkdente em Sex Set 12, 2014 3:40 pm, editado 1 vez(es) (Razão : correção)
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Sex Set 12, 2014 8:55 pm

Boa tarde!!

Por favor poste os arquivo (s) modelos!!

Use um site gratuito com sedspace depois cole o link aqui.

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Sex Set 12, 2014 10:52 pm

Boa tarde,

Primeiramente obrigado pela atenção desde já.

Criei uma planilha exemplo com a mesma ideia de função da planilha que preciso.

O exemplo está neste link

ww*w. send space .com/file /0wadcp (junte os espaços e apague o asterisco)

Caso precise de mais informações basta pedir.

Atenciosamente,

Matheus.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Sab Set 13, 2014 2:27 am

Boa noite!!

Mercadoria Recebida e Controle de Estoque são guias ou arquivos?

Considerando seu arquivo modelo....
Você deseja ao executar a macro, que se na célula B3 se tem o dado (valor ou texto), Arroz na guia Mercadoria recebida procure na guia Controle de Estoque, o dado (valor ou texto), Arroz e atualize (insira) a quantidade ?


Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Dom Set 14, 2014 2:42 am

Boa noite,

Os dois são arquivos, mas criei este exemplo com os dois no mesmo arquivo para facilitar.

O que quero é otimizar a macro, pois ela está se referindo a uma célula especifica, e isso é ruim...  O que acho que seria ideal, é fazer ela comparar o Valor da célula C3 com os valores da coluna H, e selecionar a célula da coluna H que contem a igualdade dos valores. Com essa célula selecionada, a seleção iria uma coluna para a direita (coluna de quantidades) e então seria feita a soma do valor da C4 com o valor da célula selecionada.

Mais ou menos isso:

"Se C3 = (algum valor da coluna H) então

(Selecionar célula de mesmo valor)

(Passar a seleção para a célula à direita)

(Célula selecionada = Célula selecionada + C3)

Senão
Finalizar Se"

Acho que não existe a função "algum valor da coluna H", então suspeito que deveria ser feito algum comando de repetição que verifica as células da coluna H e os compara com o valor da célula C3, e é desse comando que eu preciso para adaptá-lo às planilhas. Ou caso saiba uma maneira mais facil de fazer isso pode dizer também (:

Atenciosamente,

Matheus Dantas.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Dom Set 14, 2014 4:50 am

Boa noite!!

Algo assim?
https://www.sendspace.com/file/adt3tv
Faça os testes!!!


Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Seg Set 15, 2014 12:57 pm

Excelente!

Agora é só adaptar na planilha aqui.

Muito obrigado (:
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Seg Set 15, 2014 3:56 pm

Testei  agora com as planilhas  reais, me resultou um problema na seguinte linha:  If invdata Is Nothing Then Exit Sub

O problema é que ele não passa dessa linha, e sai do sub sem realizar os cálculos

Você pode me dizer o que o "Is Nothing" faz? Se ele interfere muito ou algum comando mais pra cima é prioridade...



Atenciosamente,

Matheus Dantas.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Seg Set 15, 2014 6:48 pm

Boa tarde!!

Verifica se o objeto foi inicializado, definido, atribui etc....
Para mais leia:
http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=267:excel-vba-empty-zls-null-nothing-missing&catid=79&Itemid=475

Será necessário verificar varias coisas no seu real arquivo, células mescladas e outros de tales de intervalos etc...

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Seg Set 15, 2014 7:12 pm

Descobri onde estava meu "Erro"

O código está pegando a coluna A das duas planilhas, e na planilha real de Mercadorias Recebidas o produto não iria na coluna A, e sim em uma célula específica, apenas o Controle de Estoque usa a coluna A.

Vou adaptar as planilhas ao código, fazendo com que o cadastro de mercadorias recebidas seja nas colunas A e  B também, até que eu saiba fazer com que o código pegue a célula necessária.

Muito obrigado mesmo pela ajuda, já automatizou bastante a procura tirando todos aqueles "IFs" (:
Voltar ao Topo Ir em baixo
Ver perfil do usuário
fdkdente



Mensagens : 7
Data de inscrição : 12/09/2014

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Ter Set 16, 2014 1:10 pm

Bom dia!!

Só acrescentando como uma ideia simples pode ajudar...

Não sou craque em VBA, sei o básico do básico. Estava pensando sobre como iria colocar os dados da planilha de Mercadorias Recebidas  na coluna A, mas não queria desmontar a estrutura de preenchimento. Então fiz a seguinte linha de comando antes de começar a fórmula toda:

Range("A16").Value = Range("B8").Value
Range("B16").Value = Range("H8").Value (B8 e H8 são as células que eu tentaria referenciar)

E no final da formula toda coloquei:

Range("A16").Value = ""
Range("B16").Value = ""


Dessa forma, fiz com que os dados ficasse temporariamente nas células que estavam de fato sendo lidas.
Agora está completo Very Happy

Obrigado novamente, e espero que o tópico ajude mais pessoas!

Abraços!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Ter Set 16, 2014 2:52 pm

Bom dia!!

Eu fico feliz que você tenho resolvido sua dúvida!

Obrigado pelo retorno! Laughing

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Otimizar macro pra diminuir " IF "   Hoje à(s) 8:58 pm

Voltar ao Topo Ir em baixo
 
Otimizar macro pra diminuir " IF "
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [RESOLVIDO]Como diminuir janela?
» como fazer a velocidade diminuir quando o sonic colidir com a agua
» [Resolvido] Diminuir espaço entre frases no html
» Diminuir largura do fórum
» Diminuir espaço entre citação e a resposta

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: