Notifications
Clear all

Editar planilha para retorno de dados

34 Posts
2 Usuários
0 Reactions
5,886 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
 

Vc fez quase tudo certo disse onde vc esta mas nao disse para onde vc quer ir (qual a coluna de destino).

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 : 04/09/2015 6:41 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio obrigado pela atenção, mas pensei que estava sendo claro e realmente não fui, portanto, o retorno (de S ou N) deve ser feito na Coluna "N" planilha TAB_ESTOQUE, obedecendo os dados recebidos de REL_ORC_NUM.
No agurdo!!

 
Postado : 05/09/2015 5:14 am
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

Tô começando a acreditar que o EXCEL não e capaz de realizar o que foi solicitado, pois nem os habituais FERAS se habilitaram, mas confio neles e fico aguardo!!!

 
Postado : 08/09/2015 5:37 am
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

Pessoal não sou bom em VBA, por esse motivo necessito da ajuda dos senhores, mas caso haja uma solução com formulas, por favor me deem uma luz que ficarei muito grato. Espero pela ajuda dos senhores

 
Postado : 11/09/2015 3:22 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Ve se isso ajuda

Coloque essa formula =PROCV([@Codigo];REL_ORC_NUM!$B$9:$H$5000;6;0) na celula N3 da tabela estoque e arrasta.

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 : 11/09/2015 6:31 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio obrigado pela resposta, mas a TAB_ESTOQUE, funciona como uma tabela e por esse motivo não posso colocar formula nela, ela somente recebe dados ja finalizados para posterior consulta ou que vão ser editados, que no caso da coluna "N" vai determinar se o ORÇAMENTO foi PAGO ou NÃO

 
Postado : 12/09/2015 12:47 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Neste caso cole esse codigo em um modulo

Sub Transferir()

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

Set WRel = Sheets("REL_ORC_NUM")
Set WEst = Sheets("TAB_ESTOQUE")
Set WB = Workbooks("Exemplo_Ajuda")

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

Application.ScreenUpdating = False

Cod = ActiveCell

Inicio:

Do While ActiveCell <> ""

If ActiveCell.Value = Cod Then

WRel.Select
ActiveCell.Offset(0, 5).Select
Selection.Copy
WEst.Select
ActiveCell.Offset(0, 7).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(1, -7).Select
Application.CutCopyMode = False
Cod = ActiveCell

WRel.Select
ActiveCell.Offset(0, -5).Select

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

WRel.Select
WRel.Range("B9").Select
WEst.Select
ActiveCell.Offset(1, 0).Select

Cod = ActiveCell

If ActiveCell.Value <> "" Then

GoTo Inicio

End If

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

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

Application.ScreenUpdating = False

WB.Save

End Sub

Nao esquece de trocar o nome do arquivo em set wb ....

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 : 12/09/2015 2:45 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio mais uma vez muito obrigado pela atenção dispensada, mas seu código quase chegou lá, pois não foi observado que o código do produto no seu caso WRel.Range("B9").Select (7894873025498) pode haver em diversos orçamentos e entradas, por esse motivo, a logica seria mais ou menos assim:

Se TAB_ESTOQUE!L = "S" (saída)
e
SE TAB_ESTOQUE!K = REL_ORC_NUM!C6 (nº orçamento)
então
TAB_ESTOQUE!N = REL_ORC_NUM!G9 (enquanto a coluna "G" tiver S ou N)
Próximo
Fim

Nesse caso seria observado se é saída e o nº orçamento

Como fazer essa logica ser transformada em código executável?
Como já disse não sou bom em VBA e fico no aguardo da ajuda de vocês.

 
Postado : 13/09/2015 6:48 am
(@mprudencio)
Posts: 2749
Famed Member
 

Experimente esse

Sub Transferir()

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

Set WRel = Sheets("REL_ORC_NUM")
Set WEst = Sheets("TAB_ESTOQUE")
Set WB = Workbooks("Exemplo_Ajuda")

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

Application.ScreenUpdating = False

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

Inicio:

Do While ActiveCell <> ""
WRel.Select

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

WRel.Select
ActiveCell.Offset(0, 5).Select
Selection.Copy
WEst.Select
ActiveCell.Offset(0, 7).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(1, -7).Select
Application.CutCopyMode = False
Cod = ActiveCell.Value & ActiveCell.Offset(0, 4).Value

WRel.Select
Range("B9").Select

Else

ActiveCell.Offset(1, 0).Select

End If

Loop

WRel.Select
WRel.Range("B9").Select
WEst.Select
ActiveCell.Offset(1, 0).Select

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

If ActiveCell.Value <> "" Then

GoTo Inicio

End If

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

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

Application.ScreenUpdating = False

WB.Save

End Sub

Não esquece de atualizar o nome do arquivo que este entre aspas em set wb.....

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 : 13/09/2015 10:40 am
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio MUITO OBRIGADO PELA ATENÇÃO, pelos primeiros teste está tudo OK, como eu mesmo digo, "quem sabe sabe, quem não sabe bate palmas e agradece." M U I T O O B R I G A D O pela sua vontade de passar seus conhecimentos gratuitamente. :lol: :lol: :lol: :mrgreen:
Espero um dia também poder ajudar outras pessoas com os meus conhecimentos.

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

Estou tentando colocar como RESOLVIDO em seus tópicos, usando o botão com marca verde, mas o botão não funciona, favor um dos moderadores colocar como resolvido.

 
Postado : 13/09/2015 5:50 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio hoje fiz mais alguns testes, e percebi que o código altera qualquer valor idêntico da coluna "B" da planilha REL_ORC_NUM que estiver na coluna "G" da planilha TAB_ESTOQUE não respeitando se na coluna "L" da planilha TAB_ESTOQUE esteja com "S" fator essencial para o resultado certo, ou seja na coluna "K" da planilha TAB_ESTOQUE tem que respeitar o número que consta na célula "C6" da planilha REL_ORC_NUM.
Acho que agora está faltando pouco, no aguardo.

 
Postado : 14/09/2015 5:39 am
(@mprudencio)
Posts: 2749
Famed Member
 

Vamos começar de novo, quais as celulas que devem ser verdadeiras para que os dados da coluna G da tabela REL_ORC_NUM seja copiada para o item correspondente na coluna N da planilha TAB_ESTOQUE.

Temos ate o momento 2 variaveis colunas b e g da planilha REL_ORC_NUM esta comparando com g e k da TAB_ESTOQUE

Vc esta dizendo que tem que respeitar o que esta na celula c6, minha pergunta é nunca tera o mesmo codigo mais de uma vez no mesmo relatorio, ou seja, o produto codigo 1 que esta no orçamento 3 so vai estar nele uma unica vez? (so um exemplo)

Se o item repetir no mesmo orçamento sera necessario, utilizar mais uma variavel para diferenciar.

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 : 15/09/2015 10:39 pm
 kiko
(@kiko)
Posts: 36
Eminent Member
Topic starter
 

MPrudencio boa noite e desculpe pela demora na resposta, o que acontece é que o número que consta na célula "C6" (no caso 2) da planilha REL_ORC_NUM é o número do orçamento constante por diversas vezes na coluna "K" da planilha TAB_ESTOQUE, só que deve ser respeitado a coluna "L" da planilha TAB_ESTOQUE, pois é nela que e determinado se é SAÍDA ou ENTRADA de produto e no caso estou tentando alterar somente o que consta na coluna "N" da planilha TAB_ESTOQUE para PAGO dos produtos de SAÍDA.

Segue em anexo a planilha com o código que você me forneceu e com um botão que quando for clicado vai alterar os dados da coluna "N" da planilha TAB_ESTOQUE para PAGO, só que NÃO PODERIA TER alterado as linhas 10 e 12 da planilha TAB_ESTOQUE pois na coluna "L" consta E (ENTRADA), POR ESSE MOTIVO DEIXE AS LINHAS NA COR VERMELHA para você ver o que está realmente acontecendo.
Espero ter sido mais claro

Suas perguntas:
“Vamos começar de novo, quais as celulas que devem ser verdadeiras para que os dados da coluna G da tabela REL_ORC_NUM seja copiada para o item correspondente na coluna N da planilha TAB_ESTOQUE.”
Resposta: Todas que tenham um código na coluna B9 para baixo da planilha REL_ORC_NUM

“Vc esta dizendo que tem que respeitar o que esta na celula c6, minha pergunta é nunca tera o mesmo codigo mais de uma vez no mesmo relatorio, ou seja, o produto codigo 1 que esta no orçamento 3 so vai estar nele uma unica vez? (so um exemplo)”
Resposta: Pode ser que sim pois é uma oficina de motos e pode ser que use por exemplo câmara de ar por duas vezes

“Se o item repetir no mesmo orçamento sera necessario, utilizar mais uma variavel para diferenciar.”
Resposta: Creio que sim

 
Postado : 16/09/2015 6:47 pm
Página 1 / 3