Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Macro copia e cola linha por linha [Resolvido]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
DANIELDDK
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sáb Mai 11, 2019 5:15 pm

Macro copia e cola linha por linha [Resolvido]

Mensagem por DANIELDDK » Sáb Mai 11, 2019 5:31 pm

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
Editado pela última vez por DANIELDDK em Ter Mai 14, 2019 6:12 pm, em um total de 1 vez.



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 756
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Macro copia e cola linha por linha

Mensagem por srobles » Sáb Mai 11, 2019 8:14 pm

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


Espero ter ajudado.

Abs.

Saulo Robles


Remember when you were young?
You shone like the sun.
Shine On You Crazy Diamond


Se suas dúvidas foram esclarecidas, acrescente ao lado do título o texto [RESOLVIDO].

DANIELDDK
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sáb Mai 11, 2019 5:15 pm

Re: Macro copia e cola linha por linha

Mensagem por DANIELDDK » Sáb Mai 11, 2019 11:45 pm

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



srobles
Jedi
Jedi
Mensagens: 756
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Macro copia e cola linha por linha

Mensagem por srobles » Dom Mai 12, 2019 3:25 am

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


Espero ter ajudado.

Abs.

Saulo Robles


Remember when you were young?
You shone like the sun.
Shine On You Crazy Diamond


Se suas dúvidas foram esclarecidas, acrescente ao lado do título o texto [RESOLVIDO].

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


DANIELDDK
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sáb Mai 11, 2019 5:15 pm

Re: Macro copia e cola linha por linha

Mensagem por DANIELDDK » Dom Mai 12, 2019 8:07 am

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 :D ", criando a aba 4 para que possa trazer os resultados e assim servir de base para a aba 2.

Atenciosamente,
Anexos
Aba4.JPG
Aba4.JPG (65.82 KiB) Exibido 598 vezes
Aba1.JPG
Aba1.JPG (41.96 KiB) Exibido 600 vezes
Aba2.JPG
Aba2.JPG (36.15 KiB) Exibido 600 vezes
Aba3.JPG
Aba3.JPG (22.97 KiB) Exibido 600 vezes



srobles
Jedi
Jedi
Mensagens: 756
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Macro copia e cola linha por linha

Mensagem por srobles » 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 :

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

   'Altere 2 para a linha que contém os dados já calculados
   Set rangeValidado = .Range("A2:O2")
Espero ter ajudado.

Abs


Espero ter ajudado.

Abs.

Saulo Robles


Remember when you were young?
You shone like the sun.
Shine On You Crazy Diamond


Se suas dúvidas foram esclarecidas, acrescente ao lado do título o texto [RESOLVIDO].

DANIELDDK
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sáb Mai 11, 2019 5:15 pm

Re: Macro copia e cola linha por linha

Mensagem por DANIELDDK » Ter Mai 14, 2019 6:01 pm

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

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 :

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

   'Altere 2 para a linha que contém os dados já calculados
   Set rangeValidado = .Range("A2:O2")
Espero ter ajudado.

Abs



srobles
Jedi
Jedi
Mensagens: 756
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Macro copia e cola linha por linha

Mensagem por srobles » Ter Mai 14, 2019 6:08 pm

DANIELDDK,

Opa que boa notícia amigo. Fico mais que satisfeito em saber que a macro tenha atendido sua necessidade.

Abs


Espero ter ajudado.

Abs.

Saulo Robles


Remember when you were young?
You shone like the sun.
Shine On You Crazy Diamond


Se suas dúvidas foram esclarecidas, acrescente ao lado do título o texto [RESOLVIDO].

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder