Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Macro copia e cola linha por linha [Resolvido]
Macro copia e cola linha por linha [Resolvido]
Prezados, boa tarde! Tudo bem?
Gostaria de saber se alguém pode me ajudar:
Tenho uma planilha que contém duas abas, sendo que na aba 1 contém 60mil linhas, da coluna A até O, bem acontece que, gostaria de copiar linha por linha da aba 1 e colar no intervalo da aba 2, o intervalo desta ultima aba é de a2:o2, pois nesta seriam realizados alguns calculos, os números copiados da aba 1 sempre serão lançados neste intervalo, na aba 2. Tipo um loop, quando finalizar os calculos ela procuraria a próxima linha da aba 1 e colaria no intervalo da aba 2.
Já esgotei todas as fontes e nenhuma traz linha por linha, somente até a ultima linha preenchida.
Desde já agradeço
Gostaria de saber se alguém pode me ajudar:
Tenho uma planilha que contém duas abas, sendo que na aba 1 contém 60mil linhas, da coluna A até O, bem acontece que, gostaria de copiar linha por linha da aba 1 e colar no intervalo da aba 2, o intervalo desta ultima aba é de a2:o2, pois nesta seriam realizados alguns calculos, os números copiados da aba 1 sempre serão lançados neste intervalo, na aba 2. Tipo um loop, quando finalizar os calculos ela procuraria a próxima linha da aba 1 e colaria no intervalo da aba 2.
Já esgotei todas as fontes e nenhuma traz linha por linha, somente até a ultima linha preenchida.
Desde já agradeço
Editado pela última vez por DANIELDDK em Ter Mai 14, 2019 6:12 pm, em um total de 1 vez.
Re: Macro copia e cola linha por linha
DANIELDDK,
Você quer copiar todas as 60mil linhas da aba 1 para a aba 2? Apenas uma linha? A cópia possui algum critério?
Informe com mais detalhes, ou se possível, disponibilize um modelo com poucos dados (fictcios).
Aguardo retorno.
Abs
Você quer copiar todas as 60mil linhas da aba 1 para a aba 2? Apenas uma linha? A cópia possui algum critério?
Informe com mais detalhes, ou se possível, disponibilize um modelo com poucos dados (fictcios).
Aguardo retorno.
Abs
Re: Macro copia e cola linha por linha
srobles,
Primeiramente, obrigado pela atenção.
Preciso que, por exemplo:
Copie o que está na ABA 1 no intervalo A2:O2 e seja colado na ABA 2, no intervalo A2:O2;
Após, copie o que está na ABA 1 no intervalo A3:O3 e seja colado na ABA 2, no intervalo A2:O2;
Após, copie o que está na ABA 1 no intervalo A4:O4 e seja colado na ABA 2, no intervalo A2:O2;
até que chegue no ultimo intervalo preenchido da ABA 1 e finalize a cola na ABA 2.
Observe que na ABA 2 a cola será sempre no mesmo intervalo, pois nesta aba serão feitos alguns cálculos que posteriormente serão transcritos em uma outra aba (ABA 3).
Mais uma vez agradeço a atenção
Primeiramente, obrigado pela atenção.
Preciso que, por exemplo:
Copie o que está na ABA 1 no intervalo A2:O2 e seja colado na ABA 2, no intervalo A2:O2;
Após, copie o que está na ABA 1 no intervalo A3:O3 e seja colado na ABA 2, no intervalo A2:O2;
Após, copie o que está na ABA 1 no intervalo A4:O4 e seja colado na ABA 2, no intervalo A2:O2;
até que chegue no ultimo intervalo preenchido da ABA 1 e finalize a cola na ABA 2.
Observe que na ABA 2 a cola será sempre no mesmo intervalo, pois nesta aba serão feitos alguns cálculos que posteriormente serão transcritos em uma outra aba (ABA 3).
Mais uma vez agradeço a atenção
Re: Macro copia e cola linha por linha
DANIELDDK,
Esses cálculos utilizarão sempre as mesmas fórmulas / funções?
Pergunto isso pois, fazer a cópia do desse intervalo para a outra aba, aguardar o cálculo ser feito, copiar novamente para a outra aba, para só então passar para a próxima linha da aba 1, á meu ver, não vai ficar algo prático.
Se pudessemos elaborar a rotina já com as etapas de cálculos embutidas no código, já exportariamos o resultado direto para a outra aba, tornando o processo mais ágil e poupando a elaboração de um código mais extenso e sujeito á falhas.
Abs
Esses cálculos utilizarão sempre as mesmas fórmulas / funções?
Pergunto isso pois, fazer a cópia do desse intervalo para a outra aba, aguardar o cálculo ser feito, copiar novamente para a outra aba, para só então passar para a próxima linha da aba 1, á meu ver, não vai ficar algo prático.
Se pudessemos elaborar a rotina já com as etapas de cálculos embutidas no código, já exportariamos o resultado direto para a outra aba, tornando o processo mais ágil e poupando a elaboração de um código mais extenso e sujeito á falhas.
Abs
Re: Macro copia e cola linha por linha
srobles, bom dia, sim utilizarão sempre os mesmos calculos.
Em anexo as imagens para ficar mais claro, não consegui anexar o arquivo em Excel devido ao seu tamanho.
As formulas utilizadas na aba 2 é o cont.ses(); que verifica se as bolas que são a base para o calculo, sairam nos resultados.
Dai como não tenho muita prática em VBA, fiz uma "pequena solução de contorno ", criando a aba 4 para que possa trazer os resultados e assim servir de base para a aba 2.
Atenciosamente,
Em anexo as imagens para ficar mais claro, não consegui anexar o arquivo em Excel devido ao seu tamanho.
As formulas utilizadas na aba 2 é o cont.ses(); que verifica se as bolas que são a base para o calculo, sairam nos resultados.
Dai como não tenho muita prática em VBA, fiz uma "pequena solução de contorno ", criando a aba 4 para que possa trazer os resultados e assim servir de base para a aba 2.
Atenciosamente,
- Anexos
-
- Aba4.JPG (65.82 KiB) Exibido 5253 vezes
-
- Aba1.JPG (41.96 KiB) Exibido 5255 vezes
-
- Aba2.JPG (36.15 KiB) Exibido 5255 vezes
-
- Aba3.JPG (22.97 KiB) Exibido 5255 vezes
Re: Macro copia e cola linha por linha
DANIELDDK,
Acredito que você já tenha os campos formulados com cont.ses() na aba de validação, correto?
Experimente o que deixo abaixo, adicionando um módulo á pasta de trabalho, e depois chame a macro através de um botão :
Se atente para alterar a seguinte linha, onde creio que você tenha os campos com as fórmulas para validação.
Espero ter ajudado.
Abs
Acredito que você já tenha os campos formulados com cont.ses() na aba de validação, correto?
Experimente o que deixo abaixo, adicionando um módulo á pasta de trabalho, e depois chame a macro através de um botão :
Código: Selecionar todos
Sub validarDados()
With ThisWorkbook
'Variáveis para controle e manipulação dos dados
Dim rangeValidacao, rangeValidado As Range
Dim linhaOrigemInicio, linhaOrigemFinal, linhaDestino As Long
Application.ScreenUpdating = False
'Aba que contém os dados de Origem
With .Sheets(1)
'Linha inicial
linhaOrigemInicio = 2
'Ultima linha da aba
linhaOrigemFinal = .Cells(Rows.Count, 1).End(xlUp).Row
End With
primeiraEtapa:
'Desabilitamos o modo copia do Excel
Application.CutCopyMode = False
'Com a Aba 1
With .Sheets(1)
'Ativamos
.Activate
'Laço a ser feito em cada linha da aba
'enquanto a linha atual for diferente da ultima
While linhaOrigemInicio <= linhaOrigemFinal
'Selecionamos a linha da coluna A até a O
.Range("A" & linhaOrigemInicio & ":O" & linhaOrigemInicio).Select
'Copiamos os dados
With Selection
.Copy
End With
'Incrementamos o valor para a proxima linha
linhaOrigemInicio = linhaOrigemInicio + 1
'Vamos para a etapa de validação
GoTo proximaEtapa
Wend
End With
'Ao término, exibimos a mensagem
MsgBox "Operação concluída com sucesso!", vbInformation, "Validação de dados"
Application.ScreenUpdating = True
'E saimos da rotina
Exit Sub
proximaEtapa:
'Com a Aba 2
With .Sheets(2)
'Ativamos a aba
.Activate
'Definimos o range de destino
'para colarmos os dados
Set rangeValidacao = Range("A2:O2")
'No intervalo determinado
With rangeValidacao
'Selecionamos
.Select
'E colamos as informações
With Selection
.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False
End With
End With
'Desabilitamos o modo de cópia
Application.CutCopyMode = False
'Após validarmos os dados
'Definimos o range a ser transferido para a aba 3
'Altere 2 para a linha que contém os dados já calculados
Set rangeValidado = .Range("A2:O2")
'Selecionamos o intervalo
With rangeValidado
.Select
'Copiamos novamente o intervalo
With Selection
.Copy
End With
End With
End With
'E com a Aba 3 (Aba de destino final do dados)
With .Sheets(3)
'Ativamos
.Activate
'Definimos qual linha irá receber os dados validados
linhaDestino = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'Selecionamos a linha na coluna A
.Range("A" & linhaDestino).Select
'Colamos os valores
With Selection
.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False
End With
'Retornamos para o inicio do laço de validação
GoTo primeiraEtapa
End With
End With
End Sub
Código: Selecionar todos
'Altere 2 para a linha que contém os dados já calculados
Set rangeValidado = .Range("A2:O2")
Abs
Re: Macro copia e cola linha por linha
srobles, boa noite! Tudo bem?
Cara era exatamente isto que estava tentando fazer... Até encontrei um outro código neste meio tempo, mas o seu ficou perfeito...
Parabéns e sucesso,
Obrigado
Cara era exatamente isto que estava tentando fazer... Até encontrei um outro código neste meio tempo, mas o seu ficou perfeito...
Parabéns e sucesso,
Obrigado
srobles escreveu: ↑Ter Mai 14, 2019 3:04 pm DANIELDDK,
Acredito que você já tenha os campos formulados com cont.ses() na aba de validação, correto?
Experimente o que deixo abaixo, adicionando um módulo á pasta de trabalho, e depois chame a macro através de um botão :Se atente para alterar a seguinte linha, onde creio que você tenha os campos com as fórmulas para validação.Código: Selecionar todos
Sub validarDados() With ThisWorkbook 'Variáveis para controle e manipulação dos dados Dim rangeValidacao, rangeValidado As Range Dim linhaOrigemInicio, linhaOrigemFinal, linhaDestino As Long Application.ScreenUpdating = False 'Aba que contém os dados de Origem With .Sheets(1) 'Linha inicial linhaOrigemInicio = 2 'Ultima linha da aba linhaOrigemFinal = .Cells(Rows.Count, 1).End(xlUp).Row End With primeiraEtapa: 'Desabilitamos o modo copia do Excel Application.CutCopyMode = False 'Com a Aba 1 With .Sheets(1) 'Ativamos .Activate 'Laço a ser feito em cada linha da aba 'enquanto a linha atual for diferente da ultima While linhaOrigemInicio <= linhaOrigemFinal 'Selecionamos a linha da coluna A até a O .Range("A" & linhaOrigemInicio & ":O" & linhaOrigemInicio).Select 'Copiamos os dados With Selection .Copy End With 'Incrementamos o valor para a proxima linha linhaOrigemInicio = linhaOrigemInicio + 1 'Vamos para a etapa de validação GoTo proximaEtapa Wend End With 'Ao término, exibimos a mensagem MsgBox "Operação concluída com sucesso!", vbInformation, "Validação de dados" Application.ScreenUpdating = True 'E saimos da rotina Exit Sub proximaEtapa: 'Com a Aba 2 With .Sheets(2) 'Ativamos a aba .Activate 'Definimos o range de destino 'para colarmos os dados Set rangeValidacao = Range("A2:O2") 'No intervalo determinado With rangeValidacao 'Selecionamos .Select 'E colamos as informações With Selection .PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False End With End With 'Desabilitamos o modo de cópia Application.CutCopyMode = False 'Após validarmos os dados 'Definimos o range a ser transferido para a aba 3 'Altere 2 para a linha que contém os dados já calculados Set rangeValidado = .Range("A2:O2") 'Selecionamos o intervalo With rangeValidado .Select 'Copiamos novamente o intervalo With Selection .Copy End With End With End With 'E com a Aba 3 (Aba de destino final do dados) With .Sheets(3) 'Ativamos .Activate 'Definimos qual linha irá receber os dados validados linhaDestino = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'Selecionamos a linha na coluna A .Range("A" & linhaDestino).Select 'Colamos os valores With Selection .PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False End With 'Retornamos para o inicio do laço de validação GoTo primeiraEtapa End With End With End Sub
Espero ter ajudado.Código: Selecionar todos
'Altere 2 para a linha que contém os dados já calculados Set rangeValidado = .Range("A2:O2")
Abs
Re: Macro copia e cola linha por linha
DANIELDDK,
Opa que boa notícia amigo. Fico mais que satisfeito em saber que a macro tenha atendido sua necessidade.
Abs
Opa que boa notícia amigo. Fico mais que satisfeito em saber que a macro tenha atendido sua necessidade.
Abs