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  Conectar-se  

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 : 30
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

avatar

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 : 30
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

avatar

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 : 30
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

avatar

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 : 30
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 : 30
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.

sendspace.com axlb80

se me puderem ajudar agradecia imenso.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba

avatar

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 : 30
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 : 30
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   

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

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: