Notifications
Clear all

Dúvidas sobre um mini sistema WMS em vba

21 Posts
3 Usuários
0 Reactions
6,276 Visualizações
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Estimados, me chamo Ronaldo sou de Curitiba, 27 anos encarregado Logístico. Meu conhecimento com excel é vasto, embora esteja longe de me tornar um expert, porém consigo desenvolver planilhas interessantes sejam elas com formulas ou seja elas com vba, mas meu nivel com vba pra criação e muito baixo, mas já adpatei inumeras rotinas e otimizei inumeros processos na empresa. meu email e [email protected]. Possuo algumas planilhas interessantes, uma delas e um mini wms que fiz para uma operação da Samsung, e agora estou montando uma rotina um pouco mais complexa, por isso vim atrás dos senhores do VBA. Em anexo segue uma planilha que estou desenvolvendo e nela tenho um problema tem uma rotina na plan 4 que quando a listbox seleciona os dados eu gostaria que se eu clicasse duas vezes ela entendesse que aquele valor era pra ser procurado na planilha estoque copiado colado em outra planilha e depois excluido da planilha do estoque? Alguem tem uma luz?

 
Postado : 24/01/2014 9:06 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

smile,

Bom Dia!

Seja muito bem vindo ao fórum. Com certeza, você poderá contribuir bastante com os demais integrantes.

Peço, por gentileza, ler atentamente as regras do fórum para podermos manter o mesmo sempre organizado. Desse modo, em próximos tópicos, compacte seus arquivos com ZIP, por menores que os mesmos sejam, antes de anexá-los aqui.

Estou transferindo seu tópico para o sub fórum correto: VBA & Macros pois assim ficará mais fácil dos integrantes lhe ajudarem.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/01/2014 5:53 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

smile,

Tentando contribuir... vamos la:
1 - Observei, no seu ListBox existente na aba Plan4 e na aba Estoque que existem várias NF's praticamente iguais. A diferença é mínima (um detalhe... como na figura abaixo) É isso mesmo? Não seria melhor criar na planilha um ID único como chave que identificasse de forma única um registro e fazer sempre a pesquisa por esse registro? Caso contrário, como será a procura do valor que você quer? Por qual coluna ou colunas?

2 -Você diz:

gostaria que se eu clicasse duas vezes ela entendesse que aquele valor era pra ser procurado na planilha estoque copiado colado em outra planilha

Copiado colado em qual planilha? É no mesmo arquivo? Que valores devem ser copiados colados? Quais colunas? A linha toda?

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/01/2014 6:21 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ronaldo, acrescentando mais algumas obs no exposto pelo Wagner, eu não utilizaria o RowSource para preencher o ListBox, outra situação que reparei é que temos o mesmo N° de NF em datas diferentes, temos Produtos com o mesmo código mas endereço diferentes, alem de outras particularidades para que se possa referenciar corretamente nas rotinas.
Sendo assim, o ideal de inicio é fazer como o Wagner orientou, criar um ID para cada produto, ai sim podemos começar a trabalhar em cima do que precisa.
Por outro lado se a intenção é controle de Estoques, no Forum Bibliotecaa tem alguns modelo que podem ajudar, depois vou ver um que estava desenvolvendo e anexo no forum tambem.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/01/2014 9:09 am
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Caros amigos,

Primeiramente estou lisonjeado de poder contar com pessoas tão inteligentes como vocês, logo abaixo segue os devidos comentários:

A "plan4" contém um listbox com ROwsource, porque foi a única maneira que encontrei para representar o que eu preciso, ( meu conhecimento em VBA e infinitamente pequeno, tenho muita dificuldade para coisas que para vcs é de grande facilidade em resolver, mas se atentanto aos fatos, então eu preciso que esta list box da plan4 esteja ligada diretamente a uma referencia que é ligada pelo codigo a seguir:
Plan 4
Range("F1").Select
Range("A1:F831").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"H1:M2"), CopyToRange:=Range("H7:M7"), Unique:=False
End Sub

Ou seja eu digito um valor numa sequencia de celulas que irao me retornar os valores devidamente filtrados conforme pesquisado, logo quando eu inserir os dados e ele filtrar vai gerar referência em uma outra celula a qual teoricamente teria que aparecer no listbox que esta com rowsource, e quando eu clicasse ele iria na planilha "estoque " copiar o valor colar em uma outra planilha que ainda nao sei que nome mas pode ser "historico" e entao iria apagar toda a linha na planilha "estoque" conforme o endereço solicitado. Bom respondendo sobre a duplicidade de NF´s, pois bem, e que soa meros exemplos ainda nao rodei por isso repeti, mas a localização na planilha estoque seria pelo endereço como exemplo "BB-003-300", pois pode repetir a nota nao o endereço, pq e um produto por endereço. A finalidade de eu excluir o endereço depois de clicado na listbox e para que as outras macros entendem que a partir daquele momento aquele devido endereço excluido se encontra vazio novamente e assim se repete o ciclo, numa espécie de cross docking, chega, armazena , separa , despacha.

Desculpem a dificuldade em explicar , mas ainda sou candidato a aspirante no mundo vba

Caso possam passar contel posso ligar..., 4188076105

Ps Mauro moro em sao jose dos pinhais tbm, somos vizinhos, moro próximo ao Bairro Pedro Moro.

 
Postado : 25/01/2014 1:35 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

smile,

Bom... não mexi nada dos códigos que você já havia feito. Sua planilha está do mesmo jeito que você criou. O que fiz foi apenas adicionar uma rotina no evento Click do ListBox que carrega para as caixa de texto os respectivos valores da linha que foi clicada e outra rotina, no evento DoubleClick que faz o que você pediu: Selecionar, na planilha Estoque, o Endereço (coluna D) que recebeu um duplo clique no ListBox, copiar as linhas para a planilha historico (que criei) e apagar da planilha Estoque a respectiva linha que foi copiada.

Teste e veja se é isso mesmo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/01/2014 3:19 pm
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Grande Wagner,

Só está colando a 1 linha no histórico, será que teria que fazer algo para entender que e para colar em sequencia pois esse historico seria acumulado de tudo que foi "baixado"
Ahhhhh outra coisa trabalho na empresa FedEx Express, e certamente que conseguindo me dar mais essa ajudinha básica de expert que sei que é, irei vos presentear com uma bela garrafa de vinho, essa planilha é muito importante para meu trabalho conto mais uma vez com sua ajuda. Infelizmente estou ha dois dias e nao consigo arrumar este bendito código.

Att

ROnaldo Binkoski

 
Postado : 25/01/2014 3:42 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ok, Ronaldo.

Segue nova versão.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/01/2014 4:27 pm
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Wagner, muito obrigado! Creio que amanhã já tenha a versão trial, aí te passo espero que possa fazer algumas críticas a cerca da planilha...

Sds

Ronaldo

 
Postado : 25/01/2014 5:11 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ronaldo, eu moro no Afonso Pena cjto Apolo) perto da FAMEC.
Voltando a sua questão, acredito que o exemplo do Wagner já resolva, mas gostaria de tirar uma duvida, na Plan4 os dados de "A1:F831" estão vinculados a um arquivo externo atraves de formulas : "...Toyama2[Toyama3.xlsm]Estoque'!G2"., na mesma nas celulas "H7:M7" é feito uma Filtragem mas no resultado falta os dados da NF n° 2, e a partir desta filtragem é que é carregado o ListBox com RowSource, só que esta propriedade carrega todos os Valores até os "Zeros" ou seja 830 linhas.

Como eu comentei, eu deixaria o RowSource e utilizaria a seguinte rotina para preencher o ListBox:
Primeiro elimine o evento : Private Sub UserForm_Click(), e cole a rotina abaixo :

Private Sub UserForm_Initialize()

    Dim cell As Range
    Dim Rng As Range
    
    
    With ThisWorkbook.Sheets("Plan4")
        'Define o Range com a Filtragem coluna H linha 7
        Set Rng = .Range("H7", .Range("H7").End(xlDown))
    End With
    
    'Para cada Celula no Range definido
    For Each cell In Rng.Cells
        
        'Se o Valor for diferente de "Zero"
        If cell <> 0 Then
            
            'Preenche o ListBox somente com os Valores Validos
            With Me.ListBox1
                .ColumnCount = 6 'Define a qde de Colunas no Listbox
    
                .AddItem cell.Value
                .List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 1
                .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 2
                .List(.ListCount - 1, 3) = cell.Offset(0, 3).Value 'Coluna 3
                .List(.ListCount - 1, 4) = cell.Offset(0, 4).Value 'Coluna 3
                .List(.ListCount - 1, 5) = cell.Offset(0, 5).Value 'Coluna 3
                .List(.ListCount - 1, 6) = cell.Offset(0, 6).Value 'Coluna 3
                .List(.ListCount - 1, 7) = cell.Offset(0, 7).Value 'Coluna 3
            End With
    
        End If
    Next cell
    
End Sub

Se quiser carregar o ListBox sem realizar a filtragem a partir do Range "A1:F1", é só trocar o endereço na seguinte linha da rotina acima :
Aqui carregamos o ListBox apartir de A1:

Set Rng = .Range("A1", .Range("A1").End(xlDown))

Faça os testes e qualquer duvida retorne.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/01/2014 9:56 pm
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Mauro, mais uma vez preciso de vossa ajuda. Vc me passou a rotina, mas agora nao sei com odaptar ela a listbox1 que tem no userform1, porque eu adaptei uma rotina do Wagner lá que ele me passou ontem, ou seja vc consegueria adaptar a sua rotina a dele? isso seria o mundo ideal pra mim..., outra coisa eu fiz varias mudanças e adaptações e queria saber se no botao picking de saida vc conseguiria me informar uma maneira que eu consiga colocar todos os campos que tem no estoque lá porque aí eu iria selecionar o que eu quero para separação e após isso seria feito uma impressão por meio da listbox, seria pedir de mais amigo? :/, espero que consiga me ajudar.

Abraços

Ronaldo

Segue Planilha.

 
Postado : 26/01/2014 12:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ronaldo, eu havia baixado o exemplo do Wagner e a unica alteração que fiz foi a Rotina que postei, para carregar o ListBox, não mexi em mais nada e funcionou corretamente.
De qualquer forma vou dar uma olhada neste modelo que anexou

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/01/2014 12:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ronaldo vamos por parte:
Para carregar o ListBox, de dois cliques no UserForm1 e aparecerá a rotina do evento Click :
Private Sub UserForm_Click()
Userform1.Show
End Sub

Apague ela e cole a abaixo, veja que a única alteração em relação a anterior é a definição do nome da Aba de "Plan4" para "FIltro Estoque".

Private Sub UserForm_Initialize()

    Dim cell As Range
    Dim Rng As Range
    
    With ThisWorkbook.Sheets("FIltro Estoque")
        'Define o Range com a Filtragem coluna H linha 7
        Set Rng = .Range("H7", .Range("H7").End(xlDown))
    End With
    
    'Para cada Celula no Range definido
    For Each cell In Rng.Cells
        
        'Se o Valor for diferente de "Zero"
        If cell <> 0 Then
            
            'Preenche o ListBox somente com os Valores Validos
            With Me.ListBox1
                .ColumnCount = 6 'Define a qde de Colunas no Listbox
    
                .AddItem cell.Value
                .List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 1
                .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 2
                .List(.ListCount - 1, 3) = cell.Offset(0, 3).Value 'Coluna 3
                .List(.ListCount - 1, 4) = cell.Offset(0, 4).Value 'Coluna 3
                .List(.ListCount - 1, 5) = cell.Offset(0, 5).Value 'Coluna 3
                .List(.ListCount - 1, 6) = cell.Offset(0, 6).Value 'Coluna 3
                .List(.ListCount - 1, 7) = cell.Offset(0, 7).Value 'Coluna 3
            End With
    
        End If
    Next cell
    
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/01/2014 12:29 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ronaldo veja se estamos no caminho certo, não entendi o porque de tantos listbox e a questão de impressão que comentou, mas como não conheço a sistematica que está querendo criar, qualquer duvida retorne.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/01/2014 1:15 pm
(@smile)
Posts: 33
Eminent Member
Topic starter
 

Mauro muito bom deu certo! Só que agora deu um outro probleminha, no botão pesquisar ele nao esta mais filtrando pelos parâmetros que eu digito? consegue me ajudar?
usei o "run" pra rodar a macro filtrar mas nao ta dando certo pq nao ta mais entendendo?

 
Postado : 26/01/2014 1:19 pm
Página 1 / 2