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 | 
 

 Copiar linha completa para outra sheet, se uma célula não está vazia

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



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Copiar linha completa para outra sheet, se uma célula não está vazia   Qui Jul 25, 2013 11:39 pm

Olá a todos
Estive a pesquisar aqui no forum, mas não consegui encontrar uma solução para o meu problema.

Então cá vai:

eu tenho uma folha de cálculo com 2 sheets.
Na sheet1 há um resumo de toda a informação relativa aos colaboradores de uma empresa num determinado mês.
Nas colunas AW e AX são registadas as saídas e entradas de colaboradores (estas células só são preenchidas quando há uma entrada ou saida, caso contrário ficam em branco).
O que pretendo é que quando preencho estas células, na sheets2 seja feita uma cópia da linha correspondente a esse colaborador.

Eu criei a macro abaixo, mas só funciona se a sheet2 estiver vazia caso contrário não actualiza quando que eu faço mudanças nas colunas das entradas e saidas.



Sub Copiar()
   Dim i As Integer
   Dim k As Integer
   
   'Variável para controlar a linha de destino
   k = 2
   
   'Percorre ""Nova Comercial - Rec Humanos"" da linha 2 até a 250
   For i = 2 To 250
   
       'Se o valor das células das colunas "AX" e "AW" for diferente de 0
       If Sheets("Nova Comercial - Rec Humanos").Cells(i, "AW").Value <> "" Or Cells(i, "AX").Value <> "" Then
       
'Copia a linha "i" no intervalo que compreende as colunas B a AX
'para linha de destino a partir da coluna "k"

Sheets("Nova Comercial - Rec Humanos").Range(Cells(i, "B"), Cells(i, "AX")).Copy Sheets("Lista de saídas e entradas").Cells(k, "B")
           'Incrementa o valor de "k" para que o intervalo seguinte seja copiado na linha de baixo.
           k = k + 1
       End If
   Next
End sub

Se alguém me conseguir ajudar a perceber o que está errado....
obrigada
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: Copiar linha completa para outra sheet, se uma célula não está vazia   Sab Jul 27, 2013 4:46 am

Boa noite!!

Tem como postar seu arquivo modelo em site gratuito??

Depois poste seu link arqui!!

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



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: link para o ficheiro   Sab Jul 27, 2013 6:22 pm

Boa tarde,
aqui esta o link para a folha de excel

sendspace.com/file/bxhj4c

O que eu pretendo é que sempre que eu preencho uma célula da coluna AW ou AX da folha 1 a linha correspendente a essa célula seja copiada (desde a coluna A até AX para a  folha 2 que tem o mesmo cabeçalho.
Queria que este procedimento fosse automático.
Obrigado!
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: Copiar linha completa para outra sheet, se uma célula não está vazia   Seg Jul 29, 2013 1:41 am

Boa Noite!!

Veja se você consegue adaptar
Na coluna AY da guia "Nova xxxxx - Rec Humanos" coloque a função
Código:
=SE(OU(AW2<>"";AX2<>"");1;0)
Código:

Sub CopiarAleVBA()
Dim lRow As Long
Application.ScreenUpdating = 0
Application.Calculation = xlCalculationManual

lRow = Range("C" & Rows.Count).End(xlUp).Row

Sheets("Nova xxxxx - Rec Humanos").Range("C2:AY" & lRow).Copy
Sheets("Lista de saídas e entradas").Range("C1").Offset(1).PasteSpecial (xlPasteValues)
With Worksheets("Lista de saídas e entradas").UsedRange
  .AutoFilter Field:=51, Criteria1:=0
  .Offset(1).EntireRow.Delete
  .AutoFilter
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = 1
End Sub

Há varias maneiras de se fazer isso, o restante eu deixarei para sua criatividade.

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



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Seg Jul 29, 2013 12:52 pm

Antes de mais muito obrigada pelo feedback Very Happy!

Eu sou relativamente nova a mexer com o vba pelo que ainda tenho bastantes dificuldades "básicas".

É suposto o código copiar a informação da folha 1 para a folha 2 e depois mediante o filtro aplicado à coluna AY apagar as linhas correspondentes a "0".Certo?

Por algum motivo, que eu não estou a perceber qual, o código dá erro a partir daqui....

.AutoFilter Field:=51, Criteria1:=0
.Offset(1).EntireRow.Delete
.AutoFilter
End With


Ou seja copia a informação para a folha dois mas não estou a conseguir que faça o filtro e apague o que não é necessário....

Alguma ideia de como resolver isto?

Muito obrigada!
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: Copiar linha completa para outra sheet, se uma célula não está vazia   Sab Ago 03, 2013 3:05 am

Boa noite!!

Da forma como eu fiz não foi tão inteligente, mas é possível criar derivadas formas para isso.

Eu não tive problema com seu anexo, mas imagine que no código eu não referenciei a guia ou tem células mescladas etc.

Tudo isso pode gerar erro.

Leia:
http://www.bertolo.pro.br/FinEst/SemanaContabeis2007/MacroExcel.pdf

Tente assim
Código:
Sub coiar()
Dim lRow As Long
Sheets("Nova xxxxx - Rec Humanos").Select '<--Veja esse linha
Application.ScreenUpdating = 0
Application.Calculation = xlCalculationManual

lRow = Range("C" & Rows.Count).End(xlUp).Row
Sheets("Nova xxxxx - Rec Humanos").Range("C2:AY" & lRow).Copy
Sheets("Lista de saídas e entradas").Range("C1").Offset(1).PasteSpecial (xlPasteValues)
With Worksheets("Lista de saídas e entradas").UsedRange
  .AutoFilter Field:=51, Criteria1:=0
  .Offset(1).EntireRow.Delete
  .AutoFilter
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = 1
End Sub
Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
PatriciaBarbosa



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Qua Ago 28, 2013 11:56 am

Boa noite,

peço desculpa pela demora a dar feedback.
Funcionou na perfeição....
obrigada Wink
Voltar ao Topo Ir em baixo
Ver perfil do usuário
PatriciaBarbosa



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Qui Ago 29, 2013 12:22 pm

Bom dia,

precisava de mais uma ajuda numa macro que penso que está quase concluída mas que falta um passo que não estou a conseguir fazer ;(

estão é assim:

eu preciso que se faça um find what (pelo nome das "categorias") na folha "dados", que se copiem os valores das contas associadas a essa categoria e que se cole na folha "sheet_destino" que corresponde a essa mesma categoria.

A macro que  criei faz esse processo, com um problema que é: quando a categoria é formada apenas por uma conta ela está a copiar contas erradas (exemplo categoria 6,7 e 8 ).

Penso que a solução passa por fazer o find e testar se a célula abaixo está em branco...mas não estou a conseguir fazer Sad .

Deixo aqui o link para uma sheet de exemplo onde está feita a macro que já criei.

http://www.sendspace.com/file/axlb80

se me puderem ajudar agradecia imenso.
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: Copiar linha completa para outra sheet, se uma célula não está vazia   Sab Ago 31, 2013 2:39 am

Boa noite!!

Como eu estou bem atrapalhado com tempo, por ventura, porque sua guia "Sheet_destino" não poderia ser em formato de baco de Dados confused 

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



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Dom Set 08, 2013 4:37 pm

Olá Alexandre,
antes de mais muito obrigada pela resposta rápida.
Não sei se percebi bem a sua sugestão, mas a questão é que a informação da sheet "dados" é retirada todos os meses do sistema informático e varia de mês para mês...penso que só desta forma consigo garantir que se aparecerem categorias com novas contas elas são sempre contabilizadas...acha que consegue ajudar-me?a
Obrigada
Voltar ao Topo Ir em baixo
Ver perfil do usuário
PatriciaBarbosa



Mensagens : 8
Data de inscrição : 25/07/2013
Idade : 29
Localização : Lisboa

MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Dom Set 22, 2013 1:25 pm

Bom dia....ainda estou a tentar resolver esta questão.....Crying or Very sad 

Alguém tem alguma sugestão?
Obrigada!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Copiar linha completa para outra sheet, se uma célula não está vazia   Hoje à(s) 10:57 am

Voltar ao Topo Ir em baixo
 
Copiar linha completa para outra sheet, se uma célula não está vazia
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [Resolvido] Como ir para outra room sem parar os acontecimentos atuais?
» Redirecionamento para outra página
» "Atalho" para outra página
» Desviar visitas para outra url
» Redirecionar banidos para outra pagina de meu desejo

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: