Ir ao conteúdo
  • Cadastre-se

Excel Copiar linha da plan1 para plan2, depois disso apagar a linha copia da plan1.


Posts recomendados

Boa tarde, gostaria de uma ajuda, eu tenho que controlar uns trabalhos aqui na oficina, uso o excel para isso, gostaria de alguma dica de MACRO para que eu pudesse retirar da plan1 "Trabalhos em execução" todos os que forem concluídos e levá-los para a plan2, "Arquivo de trabalho realizados". Ou seja, na plan1 há uma coluna com FINALIZADO, todas as linhas com OK (J) nessa coluna deveriam sair da planilha1 (Trabalhos em Execução) e migrar para a planilha 2 (Arquivo de Trabalhos Realizados), sendo que estas linhas com OK seriam apagas logo em seguida da planilha 1 (Trabalhos em Execução). Muito obrigado

 

1- A ideia seria que o código colasse os registros na linha 1 da Plan2 e empurrasse os mais antigos para baixo, mantendo o que já está armazenado.

 

2. A vontade é de deixar a Plan1 o mais intacta possível para não perder as fórmulas e condicionantes, então seria só mesmo apagar o conteúdo da linha cuja coluna J estivesse marcada como OK. A linha da plan1 está compreendida entre A até K.

 

Tentei adaptar esse VBA e não consegui.

 

Sub CopiaLinhaCritério()

 

Do While Range("A1").Select

Cells.Find(What:="OK").Activate

lin = ActiveCell.Row

Rows(lin).Select

Selection.Copy

Sheets("Plan2").Select

ActiveSheet.Paste

Rows("1:1").Select

Application.CutCopyMode = False

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Sheets("Plan1").Select

Application.CutCopyMode = False

Selection.Delete Shift:=xlUp

Range("A1").Select

Loop

    

End Sub

 

Link para o comentário
Compartilhar em outros sites

Muito obrigado pela dica, segue a tabela.

PLANILHA CONTROLE OFICINA.xlsx

adicionado 1 minuto depois
Em 25/03/2019 às 17:22, WAGNER DE MELO DUARTE disse:

Boa tarde, gostaria de uma ajuda, eu tenho que controlar uns trabalhos aqui na oficina, uso o excel para isso, gostaria de alguma dica de MACRO para que eu pudesse retirar da plan1 "Trabalhos em execução" todos os que forem concluídos e levá-los para a plan2, "Arquivo de trabalho realizados". Ou seja, na plan1 há uma coluna com FINALIZADO, todas as linhas com OK (J) nessa coluna deveriam sair da planilha1 (Trabalhos em Execução) e migrar para a planilha 2 (Arquivo de Trabalhos Realizados), sendo que estas linhas com OK seriam apagas logo em seguida da planilha 1 (Trabalhos em Execução). Muito obrigado

 

1- A ideia seria que o código colasse os registros na linha 1 da Plan2 e empurrasse os mais antigos para baixo, mantendo o que já está armazenado.

 

2. A vontade é de deixar a Plan1 o mais intacta possível para não perder as fórmulas e condicionantes, então seria só mesmo apagar o conteúdo da linha cuja coluna J estivesse marcada como OK. A linha da plan1 está compreendida entre A até K.

 

Tentei adaptar esse VBA e não consegui.

 

Sub CopiaLinhaCritério()

 

Do While Range("A1").Select

Cells.Find(What:="OK").Activate

lin = ActiveCell.Row

Rows(lin).Select

Selection.Copy

Sheets("Plan2").Select

ActiveSheet.Paste

Rows("1:1").Select

Application.CutCopyMode = False

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Sheets("Plan1").Select

Application.CutCopyMode = False

Selection.Delete Shift:=xlUp

Range("A1").Select

Loop

    

End Sub

Desde já, agradeço a ajuda.

 

Link para o comentário
Compartilhar em outros sites

@osvaldomp Muito obrigado pelo aviso, compactei e anexei. valeu pela força.

Em 25/03/2019 às 17:22, WAGNER DE MELO DUARTE disse:

Boa tarde, gostaria de uma ajuda, eu tenho que controlar uns trabalhos aqui na oficina, uso o excel para isso, gostaria de alguma dica de MACRO para que eu pudesse retirar da plan1 "Trabalhos em execução" todos os que forem concluídos e levá-los para a plan2, "Arquivo de trabalho realizados". Ou seja, na plan1 há uma coluna com FINALIZADO, todas as linhas com OK (J) nessa coluna deveriam sair da planilha1 (Trabalhos em Execução) e migrar para a planilha 2 (Arquivo de Trabalhos Realizados), sendo que estas linhas com OK seriam apagas logo em seguida da planilha 1 (Trabalhos em Execução). Muito obrigado

 

1- A ideia seria que o código colasse os registros na linha 1 da Plan2 e empurrasse os mais antigos para baixo, mantendo o que já está armazenado.

 

2. A vontade é de deixar a Plan1 o mais intacta possível para não perder as fórmulas e condicionantes, então seria só mesmo apagar o conteúdo da linha cuja coluna J estivesse marcada como OK. A linha da plan1 está compreendida entre A até K.

 

Tentei adaptar esse VBA e não consegui.

 

Sub CopiaLinhaCritério()

 

Do While Range("A1").Select

Cells.Find(What:="OK").Activate

lin = ActiveCell.Row

Rows(lin).Select

Selection.Copy

Sheets("Plan2").Select

ActiveSheet.Paste

Rows("1:1").Select

Application.CutCopyMode = False

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Sheets("Plan1").Select

Application.CutCopyMode = False

Selection.Delete Shift:=xlUp

Range("A1").Select

Loop

    

End Sub

Desde já, agradeço a ajuda.

 

PLANILHA CONTROLE OFICINA.rar

Link para o comentário
Compartilhar em outros sites

Nem o segundo arquivo eu consegui abrir. Só consegui acessar uma cópia do seu arquivo com a ajuda do @Patropi. No entanto não encontrei nele as planilhas Trabalhos em Execução e Arquivo de Trabalhos Realizados, às quais você se referiu no post #1.

 

Link para o comentário
Compartilhar em outros sites

O ideal é que você preenchesse as duas planilhas.

 

porque o que seria Programa na segunda planilha?

 

E qual a diferença ente data de entrega, data programada da entrega, e data efetiva da entrega.

 

Numero da OT na primeria planilha esta no coluna B na finalizado na coluna H 

 

Qto mais padrão for seu arquivo ou seja nomes das colunas no mesmo lugar melhor.

 

Altere se for realmente necessario.

 

E neste seu exemplo quais as linhas devem ser levadas para a segunda planilha?

 

 

Link para o comentário
Compartilhar em outros sites

1. cole uma cópia do código abaixo no módulo da planilha TRABALHOS EM EXECUÇÃO.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 11 Or Target.Value <> "OK" Then Exit Sub
 Cells(Target.Row, 1).Resize(, 12).Copy Sheets("ARQUIVO TRABALHOS REALIZADOS").Cells(Rows.Count, 1).End(3)(2)
 Rows(Target.Row).Delete
End Sub

funcionamento - ao inserir OK na coluna K da planilha TRABALHOS EM EXECUÇÃO a linha correspondente será replicada na primeira linha vazia da planilha ARQUIVO TRABALHOS REALIZADOS e em seguida a linha de origem será excluída. Se for conveniente pode-se incluir no código comandos para ordenar os registros por data na planilha destino.

 

obs. se já houver registros com OK na coluna K bastará selecionar a célula com OK, apertar F2 e em seguida apertar Enter; se a quantidade de OKs for grande será mais prático filtrar, copiar as linha filtradas e colar na planilha destino e em seguida excluir as linhas filtradas.

 

Link para o comentário
Compartilhar em outros sites

@osvaldomp Estou fazendo no Office, não sei o que houve, envio novamente, desculpe pela dificuldade. Obrigado

PLANILHA OFICINA teste 3.rar

adicionado 7 minutos depois

@CasaDoHardware Boa tarde, então, há 3 planilhas, trabalhos em execução, arquivos de trabalhos realizados e fomulário. Quando insiro uma nova através da macro salvar no formulário, ele cria uma nova linha, a partir da linha 4, essa nova linha fica com todas as condicionais programadas, mas não leva a fórmulas da coluna H (FINALIZADO), essa daqui =SE(G4=0;"";"OK"), ou seja, se data real de entrega estiver preenchida ela marca OK na coluna H. A ideia do VBA seria fazer com que TODA LINHA que estivesse anotada como OK na linha H fosse apagada e seus dados transferidos para o ARQUIVO, arquivos trabalhos realizados. Desde já agradeço imensamente a ajuda, deixo a planilha aqui para caso possa dar uma olhada e, se possível me dar alguma dica, saudações.  

PLANILHA OFICINA teste 3.rar

Link para o comentário
Compartilhar em outros sites

@osvaldomp Obrigado pelo alerta, encaminho novamente a tabela. Saudações

PLANILHA OFICINA teste 3.rar

adicionado 4 minutos depois

@osvaldomp Muito obrigado, vou fazer isso e qualquer dúvida eu pergunto.

adicionado 13 minutos depois

@osvaldomp Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column <> 11 Or Target.Value <> "OK" Then Exit Sub Cells(Target.Row, 1).Resize(, 12).Copy Sheets("ARQUIVO TRABALHOS REALIZADOS").Cells(Rows.Count, 1).End(3)(2) Rows(Target.Row).Delete End Sub                                                                                    Bom dia, coloquei no VBA, salvei, mas nada aconteceu, devo ter deixado de fazer alguma coisa. você poderia me dizer qual como devo fazer? Eu bari o VBA (ALT+F11) selecionei a tabela TRABALHOS EM EXECUÇÃO, depois inserir módulo, colei a rotina que me mandou salvei e fechei, mas não funcionou, o que deixei de fazer? Obrigado mesmo.

Link para o comentário
Compartilhar em outros sites

21 horas atrás, WAGNER DE MELO DUARTE disse:

Eu bari o VBA (ALT+F11) selecionei a tabela TRABALHOS EM EXECUÇÃO, depois inserir módulo, colei a rotina que me mandou salvei e fechei, mas não funcionou, ...

 

Em 30/03/2019 às 21:27, osvaldomp disse:

1. cole uma cópia do código abaixo no módulo da planilha TRABALHOS EM EXECUÇÃO.

 

1. copie o código daqui

2. clique com o direito na guia da planilha TRABALHOS EM EXECUÇÃO e escolha Exibir Código

3. cole o código na janela em branco que irá se abrir, aí pode fechar o editor de VBA e fazer os testes

Link para o comentário
Compartilhar em outros sites

@CasaDoHardware Obrigado por todas as dicas.

 

adicionado 3 minutos depois

@osvaldomp Antes de tudo, quero aqui registrar meu agradecimento pela sua ajuda, meu muito obrigado a você por toda a paciência, pela orientação e pelas correções feitas. Quero também dizer o quanto esse espaço é valioso (aprendi bastante em outros tópicos) e demonstra claramente que existem pessoas que prezam o partilhar de informação e conhecimento, estando dispostas a oferecer ajuda. Obrigado a todos.  

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...