Notifications
Clear all

Editar planilha para retorno de dados

34 Posts
2 Usuários
0 Reactions
5,797 Visualizações
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

Boa noite a todos, tenho uma pasta de trabalho (em anexo) com 2 planilhas REL_ORC_NUM e TAB_ESTOQUE.
A planilha TAB_ESTOQUE é tipo um banco de dados.
Na planilha REL_ORC_NUM na célula C6 digito um número de orçamento e por meio de FORMULAS MATRICIAS, consigo retornar todos os dados existentes na planilha TAB_ESTOQUE, até aí tudo bem, mas minha dúvida é a seguinte:
Como posso buscar os dados necessários e após editar a coluna “G” (para S ou N) da planilha REL_ORC_NUM e retornar os mesmos para a planilha TAB_ESTOQUE, HAJA VISTA QUE O VALOR DAS LINHAS DAS CELULAS QUE OCULPAM na planilha REL_ORC_NUM não são os mesmo para retorno a planilha TAB_ESTOQUE??
OBS: Caso necessário, A BUSCA E O RETORNO podem ser feitos por VBA.
Fico no aguardo, pois venho tentando sem sucesso!!

 
Postado : 04/09/2015 5:24 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Entao mais algumas duvidas, qdo perguntei celulas me referi as colunas o codigo compara as colunas g e n da tabela estoque com as colunas b e d da planilha orçamento se o valor for verdadeiro ele vai copiar o valor da coluna G da planilha orçamento e colar na coluna N da planilha estoque isso o codigo ja faz. Vc disse na postagem anterior que o codigo deve respeitar o valor da celula C6 para realizar a consulta e atualizar os valores, neste caso estremos indo para a 3ª variavel a ser pesquisada pois ja temos codigo do produto e orçamento daquele produto na linha so que se o orçamento for diferente de c6 ele nao executa mesmo que seja as duas condições verdadeira.

Qdo te perguntei se tiver o mesmo item duplicado no mesmo orçamento (no seu exemplo câmara de ar), vai ser necessario mais uma outra variavel para identificar a diferença dos dois registros ou seja se vc tiver câmara de ar lançado duas vezes no orçamento vai ter que existir alguma outra informação para diferenciar qual é um e qual é outro. Minha pergunta qual seria essa variavel?

Aguardo

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/09/2015 2:49 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Com o objetivo de facilitar poste um arquivo "completo" (todas as colunas de cabeçalho), talvez com o arquivo completo fique mais facil

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/09/2015 2:59 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio obrigado, mas a sua macro NÃO ESTÁ RESPEITANDO a seguinte logica:

Se coluna L da planilha TAB_ESTOQUE = "S" (saída)
e
SE coluna K da planilha TAB_ESTOQUE = Célula C6 da planilha REL_ORC_NUM (nº orçamento)
então
coluna N da planilha TAB_ESTOQUE = coluna G da planilha REL_ORC_NUM (enquanto a coluna "G" tiver PAGO ou NÃO)
Próximo
Fim

Você chegou a testar o arquivo anexado anteriormente???
Lá você vera que sua macro alterar alguns dados que não deveriam ser alterados.

PORQUE Se coluna "L" da planilha TAB_ESTOQUE = "S" (saída)?
Porque somente quero editar os dados que forem de SAIDA.

Porque SE coluna "K" da planilha TAB_ESTOQUE = Célula "C6" da planilha REL_ORC_NUM (nº orçamento)?
Porque quero que sejam editados somente os dados da planilha TAB_ESTOQUE que sejam referentes ao Orc. 2 (no caso) que constam a partir da linha B9 na planilha REL_ORC_NUM.

Sua macro altera os dados na coluna "N" da planilha TAB_ESTOQUE como eu preciso, MAS TAMBÉM ALTERAR SE NA COLUNA "L" tiver o mesmo nº do ORC. Mesmo sendo Entrada.

Sua pergunta: “Com o objetivo de facilitar poste um arquivo "completo" (todas as colunas de cabeçalho), talvez com o arquivo completo fique mais facil”.
O arquivo já está completo com todas as colunas de cabeçalho, somente não consta todos os materiais vendidos, que no caso ocupa mais de 10.000 linhas.
No aguardo

 
Postado : 17/09/2015 4:51 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Entao segundo suas informaçoes nao tem nenhuma informação na planilha estoque da coluna a ate f da planilha estoque

Entao temos as seguintes variaveis.

coluna G codigo do produto

coluna L entrada ou saida

coluna K deve ser igual ao valor da celula c6 para a condição ser verdadeira

Se na coluna L a informação for E (entrada) nao altera a coluna em amarelo

É isso???

Se for isso continuo com a pergunta se tiver um item duplicado no orçamento o que vai diferenciar para efeito de pesquisa, supondo por exemplo que um item tenha Sim o outro N se todas as condições apresentadas verdadeiras, isso vai dar erro, pois vai considerar so o primeiro registro

Qual outra variavel usar na pesquisa

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/09/2015 7:56 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

Marcelo Prudencio bom dia vamos lá.
Indagação: “Entao segundo suas informaçoes nao tem nenhuma informação na planilha TAB_ESTOQUE da coluna a ate f da planilha REL_ORC_NUM”
Resposta: CERTO

Entao temos as seguintes variaveis.

coluna G TAB_ESTOQUE codigo do produto
Resposta: CERTO

coluna L TAB_ESTOQUE entrada ou saida
Resposta: CERTO

coluna K TAB_ESTOQUE deve ser igual ao valor da celula c6 REL_ORC_NUM para a condição ser verdadeira
Resposta: CERTO

Se na coluna L a informação for E (entrada) nao altera a coluna em amarelo
Resposta: ERRADO

Se na coluna L TAB_ESTOQUE a informação for E (entrada) nao altera a coluna N DA PLANILHA TAB_ESTOQUE
Resposta: ISTO SERIA O CERTO

PERGUNTA: “se tiver um item duplicado no orçamento o que vai diferenciar para efeito de pesquisa?”
RESPOSTA: Acho que a posição do item em relação a planilha TAB_ESTOQUE ou seja a linha que ele ocupa no contexto

Marcelo Prudencio temos que pensar que:
A planilha REL_ORC_NUM é um FILTRO da planilha TAB_ESTOQUE.

Se na celula c6 REL_ORC_NUM colocarmos o Nº 2 e dar enter é como se tivéssemos FILTRADO a planilha TAB_ESTOQUE primeiramente na coluna L com “S” e depois na coluna “K” com o Nº 2, você verá que elas ficaram idênticas COM 16 LINHAS, diante disso, quero pegar tudo que coloquei na coluna “G” da planilha REL_ORC_NUM (no caso está escrito PAGO) E COLOCAR na coluna “N” da planilha TAB_ESTOQUE.

Isto vale para qualquer nº de Orc que quiser.
Espero ter sido claro nas minhas respostas, mas caso precise estarei a disposição para esclarecimentos, haja vista a sua imensa dedicação em me ajudar
OBS: na coluna “G” da planilha REL_ORC_NUM pode estar escrito qualquer coisa que queira mudar, somente está de amarelo por motivo de destaque

 
Postado : 18/09/2015 5:31 am
(@mprudencio)
Posts: 2749
Famed Member
 

Deixa eu ver se entendi sua ultima observação, a planilha orçamento é feita de um filtro na tabela estoque com base no numero do orçamento? Isso me parece claro, agora nao entendi outra coisa o preenchimento da coluna n na tabela e so com o objetivo de verifica o pagamento? Pq se for apenas para veirficar o pagamento e dar baixa no estoque tenho uma outra ideia.

Explica por favor todo o processo da planilha que vc esta imaginando fazer para que funcione como vc precisa.

Imagina que vc esta fazendo um novo orçamento como ele é feito ate o momento da finalização da venda.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 18/09/2015 6:09 am
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio A COISA FUNCIONA ASSIM:

A moto chega na oficina e é aberto um orçamento (ou se você quiser tratar com uma pre venda)
Durante o tempo que permanece na oficina, são solicitadas peças para consertar essa moto
Essas peças são lançadas automaticamente no ORÇAMENTO dessa moto que automaticamente lança como SAIDA NO ESTOQUE e N (coluna “N” da planilha TAB_ESTOQUE) como ainda não esta PAGO.

Ao final do serviço pode ser um dia ou mais, o PROPRIETÁRIO quer fazer o pagamento, ai é que faço a pesquisa na célula “C6” da planilha REL_ORC_NUM do nº do ORÇAMENTO daquela moto.

De posse do que foi gasto e caso o PROPRIETARIO faça o pagamento, então tenho que colocar PAGO na coluna “G” da planilha REL_ORC_NUM e que somente ai fazendo uso da sua MACRO, PEGAR ESSE VALORES DA COLUNA “G” e lançar na coluna “N” da planilha TAB_ESTOQUE comprovando assim o recebimento daquele ORÇAMENTO.
Espero ter sido claro na explicação.

 
Postado : 18/09/2015 10:49 am
(@mprudencio)
Posts: 2749
Famed Member
 

Pelo que entendi, sua tabela estoque não é um controle de estoque, e sim um controle financeiro, já que aparentemente todas as vendas são feitas nesta tabela, e qdo vc vai receber vc gera (por formulas ou VBA), a aba orçamento.

Se for isso pode-se simplificar isso alterando o formato dos arquivos, simplificando o entendimento e o uso do arquivo.

Com base em suas explicações imagino a seguinte situação ve se acertei.

Vc tem na planilha original uma aba (não disponibilizada) que é seu cadastro de produtos, ou seja, seu controle de estoque.
A planilha que vc disponibilizou como estoque é o seu controle de entrada e saída, o ideal é que isso seja feito em separado.
A planilha orçamento que vc disponibilizou (e vc mesmo disse), é onde vc efetua seus filtros e apresenta ao cliente o total dos serviços.

Penso que controle financeiro não se faz com o estoque, pois isso dificulta a contabilidade, então a primeira coisa que sugiro fazer é separar os dois controles

Estoque vc controla entrada e saída de mercadorias, e somente isso
Controle de recebimentos vc faz em contas a receber e são coisas diferentes.

Entao fazer a separação dos dois é o melhor caminho para que vc tenha uma melhor visualização dos resultados da empresa.

Se quiser seguir esse novo caminho vemos o que se pode fazer.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 19/09/2015 4:34 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio bom dia e vamos as respostas:
“Pelo que entendi, sua tabela estoque não é um controle de estoque, e sim um controle financeiro, já que aparentemente todas as vendas são feitas nesta tabela, e qdo vc vai receber vc gera (por formulas ou VBA), a aba orçamento.”
Resposta: Em parte sim é um controle de estoque de recebimentos

Se for isso pode-se simplificar isso alterando o formato dos arquivos, simplificando o entendimento e o uso do arquivo.
Com base em suas explicações imagino a seguinte situação ve se acertei.

“Vc tem na planilha original uma aba (não disponibilizada) que é seu cadastro de produtos, ou seja, seu controle de estoque.”
Resposta: A planilha TAB_ESTOQUE disponibilizada e o cadastro de produtos de ENTRADA e SAÍDA

“A planilha que vc disponibilizou como estoque é o seu controle de entrada e saída, o ideal é que isso seja feito em separado.”
Resposta: Do jeito que está atende plenamente ao desejado

A planilha orçamento que vc disponibilizou (e vc mesmo disse), é onde vc efetua seus filtros e apresenta ao cliente o total dos serviços.
Resposta: Sim, perfeito

“Penso que controle financeiro não se faz com o estoque, pois isso dificulta a contabilidade, então a primeira coisa que sugiro fazer é separar os dois controles”
Resposta: O controle financeiro NÃO É FEITO COM ESTOQUE, apenas para efeito de pagamento parcial, devo colocar PAGO nos itens que por ventura recebi, para quando a pessoa novamente vier fazer o pagamento do restante, possa relacionar somente o que ele realmente deve

“Estoque vc controla entrada e saída de mercadorias, e somente isso”
Resposta: Como já foi explicad acima
“Controle de recebimentos vc faz em contas a receber e são coisas diferentes.”
Resposta: Sim já e feito

“Entao fazer a separação dos dois é o melhor caminho para que vc tenha uma melhor visualização dos resultados da empresa.”
Resposta: Sim já e feito

MPrudencio como você pode perceber, a minha dificuldade é somente LANÇAR PAGO na coluna N da planilha TAB_ESTOQUE, resolvido isto acaba a dificuldade.
Mais uma vez grato pela atenção dispensada e espero que você ou qualquer outro participante do fórum possa resolver somente essa dúvida.
No aguardo

 
Postado : 20/09/2015 7:38 am
(@mprudencio)
Posts: 2749
Famed Member
 

Testa agora nos testes que fiz aqui aparentemente esta funcionando.

Sub Transferir()

Dim WRel As Worksheet
Dim WEst As Worksheet
Dim WB As Workbook
Dim Cod As String
Dim Orc As String

Set WRel = Sheets("REL_ORC_NUM")
Set WEst = Sheets("TAB_ESTOQUE")
Set WB = Workbooks("Exemplo_Ajuda")
Orc = WRel.Range("C6").Value

WEst.Select
WEst.Range("G3").Select
WRel.Select
WRel.Range("B9").Select

Application.ScreenUpdating = False

Inicio:

Cod = ActiveCell.Value & Orc & ActiveCell.Offset(0, 3).Value

Do While ActiveCell <> ""

If ActiveCell.Value & ActiveCell.Offset(0, 2).Value & ActiveCell.Offset(0, 3).Value = Cod Then

ActiveCell.Offset(0, 5).Select
Selection.Copy
WEst.Select

Do While ActiveCell <> ""

If ActiveCell.Value & ActiveCell.Offset(0, 4).Value & ActiveCell.Offset(0, 5).Value = Cod Then

ActiveCell.Offset(0, 7).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.CutCopyMode = False
WEst.Range("G3").Select
WRel.Select
ActiveCell.Offset(1, -5).Select

GoTo Inicio

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

WEst.Select
WEst.Range("G3").Select
WRel.Select
Application.CutCopyMode = False

If ActiveCell <> "" Then

ActiveCell.Offset(1, -5).Select

GoTo Inicio

Else

GoTo Sair

End If

Sair:

WEst.Select
WEst.Range("G3").Select
WRel.Select
WRel.Range("B9").Select

MsgBox "Atualização Concluida com Sucesso", vbOKOnly, "Atenção"

Application.ScreenUpdating = True

WB.Save

End Sub

Lembre se das correções que ja comentei em outros posts

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 20/09/2015 12:04 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio boa noite e desculpa pela demora, pois ficamos até agora sem internet no nosso bairro, mas vamos lá.
Primeiramente obrigado mais uma vez pela dispendiosa atenção a minha dúvida.

Pelos teste de acabei de fazer minhas considerações:
Os primeiros testes usando o nº 2 na WRel.Range("C6") tudo estava a mil maravilhas colocou PAGO ONDE NECESSITAVA.

Para simular o DIA DIA que raramente acontece mas pode, então dupliquei um dos códigos dos produtos desse orçamento 2 e para minha supressa, REALMENTE a macro somente muda do primeiro código do segundo, o repetido, a macro desconsidera, caso você achar que não é possível fazer esse update vou entender pois todos nos temos nossos afazeres do dia e muita das vezes não é possível, mas se for fácil e você puder, você vai facilitar muito minha vida por aqui.
No aguardo e mais uma vez MUITO OBRIGADO.

 
Postado : 21/09/2015 4:41 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Eu ja lhe questionei isso em outro momento antes de ajustar o codigo e vc nao me respondeu.

Para funcionar é preciso ter uma NOVA VARIAVEL, para que seja feita a comparação. E por essa mesma razão que lhe falei que a forma que sua planilha é apresentada e pouco funcional, isso deveria ser feito em separado. Pode ser que alguem com mais conhecimento que eu possa lhe ajudar a resolver esse problema. Ate pq ate onde entendi a sua tabela estoque é unica ou seja o produto so aparece uma vez, o que pode aparecer 2 vezes é na tabela orçamento, ou estou enganado?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 21/09/2015 5:01 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Testa essa adaptação

Sub Transferir()

Dim WRel As Worksheet
Dim WEst As Worksheet
Dim WB As Workbook
Dim Cod As String
Dim Orc As String

Set WRel = Sheets("REL_ORC_NUM")
Set WEst = Sheets("TAB_ESTOQUE")
Set WB = Workbooks("Exemplo_Ajuda")
Orc = WRel.Range("C6").Value

WEst.Select
WEst.Range("G3").Select
WRel.Select
WRel.Range("B9").Select

Application.ScreenUpdating = False

Inicio:

Cod = ActiveCell.Value & Orc & ActiveCell.Offset(0, 3).Value

Do While ActiveCell <> ""

If ActiveCell.Value & ActiveCell.Offset(0, 2).Value & ActiveCell.Offset(0, 3).Value = Cod Then

ActiveCell.Offset(0, 5).Select
Selection.Copy
WEst.Select

Do While ActiveCell <> ""

If ActiveCell.Value & ActiveCell.Offset(0, 4).Value & ActiveCell.Offset(0, 5).Value = Cod Then

If ActiveCell.Offset(0, 7).Value = "" Then

ActiveCell.Offset(0, 7).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.CutCopyMode = False
WEst.Range("G3").Select
WRel.Select
ActiveCell.Offset(1, -5).Select

GoTo Inicio

Else

ActiveCell.Offset(1, 0).Select
End If

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

WEst.Select
WEst.Range("G3").Select
WRel.Select
Application.CutCopyMode = False

If ActiveCell <> "" Then
ActiveCell.Offset(1, -5).Select
GoTo Inicio

Else

GoTo Sair

End If
Sair:

WEst.Select
WEst.Range("G3").Select
WRel.Select
WRel.Range("B9").Select

MsgBox "Atualização Concluida com Sucesso", vbOKOnly, "Atenção"

Application.ScreenUpdating = True

WB.Save

End Sub

Pelos testes ta ok

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 22/09/2015 12:45 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio BOA NOITE, pelos primeiros teste a macro rodou e não fez nada, ai eu percebi que ela funcionava SE a coluna "N" da planilha TAB_ESTOQUE estivesse VAZIO.

Fiz uma pequena mudança em:
If ActiveCell.Offset(0, 7).Value = "" Then
Para
If ActiveCell.Offset(0, 7).Value <> "" Then
E aparentemente está funcionando, vou continuar testando, mas de qualquer maneira MUITO OBRIGADO pela atenção dispensada, penso eu que não haverá mais problemas.
Grato

 
Postado : 22/09/2015 6:19 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio vou tentar responder sua indagações.
“Para funcionar é preciso ter uma NOVA VARIAVEL, para que seja feita a comparação.”
Resposta: Concordo e pelo meu pouco conhecimento seria o que está gravado na coluna N da planilha TAB_ESTOQUE.

“Ate pq ate onde entendi a sua tabela estoque é única, ou seja, o produto so aparece uma vez,”
Resposta: A planilha TAB_ESTOQUE (tabela estoque) não é única, mas é ela que recebe as ENTRADAS e SAÍDAS de qualquer produto existente na TAB_PRODUTO onde realmente tenho o ESTOQUE REAL.
As colunas “Descrição do produto” constantes tanto na planilha REL_ORC_NUM como na planilha TAB_ESTOQUE, na realidade NÃO CONSTA A DESCRIÇÃO DO PRODUTO e sim o NÚMERO(CODIGO) DO PRODUTO da planilha TAB_PRODUTO

“ o que pode aparecer 2 vezes é na tabela orçamento, ou estou enganado?”
Resposta: Enganado porque na planilha REL_ORC_NUM (tabela orçamento) vai aparecer todos os produtos que foram VENDIDOS em TAL ORÇAMENTO, se o produto for vendido 1, 2, 3....ou N vezes, vai aparecer 1, 2, 3....ou N vezes na planilha REL_ORC_NUM porque ela, se podemos assim dizer, é um espelho do que constar na planilha TAB_ESTOQUE referente ao um numero de orçamento.
A planilha REL_ORC_NUM somente existe para poder editar e modificar o que existe na coluna N da planilha TAB_ESTOQUE.
Espero ter podido esclarecer o funcionamento dessa planilha.

 
Postado : 23/09/2015 2:50 pm
Página 2 / 3