Notifications
Clear all

Transferir dados da Plan1 para plan2

11 Posts
2 Usuários
0 Reactions
2,772 Visualizações
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Aproveitando o título do tópico: Pessoal, eu fiz uma planilha onde eu faço faturas e eu gostaria que cada vez que eu preenchesse os campos nome, endereço e telefone, eles fossem copiados para planilha 2 . Então, assim eu teria um cadastro das pessoas. Eu até gravei a macro da cópia e fiz um botão, mas eu não consigo fazer com que ele pule uma linha para colar as próximas entradas na linha de baixo e assim sucessivamente. Ele está copiando sempre em cima da mesma.
Alguém pode me dar uma luz? Obrigada

 
Postado : 17/03/2012 3:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!
Regina, por favor abra seu próprio tópico!!

Att

 
Postado : 17/03/2012 3:56 pm
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Ok. Desculpe. Como era quase a mesma coisa, achei que ia ser uma duplicata. Vou abrir.

 
Postado : 17/03/2012 8:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Regina, para uma resposta mais concreta, o ideal seria detalhar melhor, quais os Ranges(endereços), se estão em Linhas ou em Colunas, ou anexar o que você já criou com dados ficticios e de tamanho reduzido em arquivo compactado (Zip, Rar).

Por hora, o que posso passar é uma rotina basica que transfere de uma aba para uma outra sempre abaixo do ultimo registro os dados de 3 campos da primeira aba, é o caso de você ajustar os Ranges e adaptar a sua necessidade.

    Sub Transferir()

        Dim iRow_1 As Long 'Linha 2 da Aba fatura
        Dim iRow_2 As Long 'Variavel para a Linha da Aba Cadastro
        
        Dim wsFatura As Worksheet 'Aba de nome Fatura
        Dim wsCadastro As Worksheet 'Aba de nome Cadastro
    
        iRow_1 = 2 'Linha 2 da Aba fatura
    
        Set wsFatura = Worksheets.Application.Sheets("Fatura")
        Set wsCadastro = Worksheets.Application.Sheets("Cadastro")
    
        'Conta e armazena na Variável iRow_2 a última Linha Preenchida da aba Cadastro
        iRow_2 = wsCadastro.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
        'Transfere os dados preenchidos nas Celulas da aba Fatura, neste caso 3
        'e copia para a aba Cadastro abaixo do ultimo registro
        wsCadastro.Cells(iRow_2, 1).Value = wsFatura.Cells(iRow_1, 1).Value
        wsCadastro.Cells(iRow_2, 2).Value = wsFatura.Cells(iRow_1, 2).Value
        wsCadastro.Cells(iRow_2, 3).Value = wsFatura.Cells(iRow_1, 3).Value
    
    End Sub

Na rotina acima, estou supondo que em seu modelo tem as abas "Fatura e Cadastro"

[]s

 
Postado : 17/03/2012 8:03 pm
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Gente...fui mais rápida.Desculpe mais uma vez. Vou pedir para vc cancelar o novo tópico que eu criei assim que vi a sua mensagem! Mais uma vez me desculpe!

 
Postado : 17/03/2012 8:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Gente...fui mais rápida.Desculpe mais uma vez. Vou pedir para vc cancelar o novo tópico que eu criei assim que vi a sua mensagem! Mais uma vez me desculpe!

Sem problemas, já exclui o tópico repetido.

Veja se a rotina que postei ajuda, se não, passe mais detalhes conforme solicitei acima.

[]s

 
Postado : 17/03/2012 8:17 pm
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Mauro, no caso, a linha de nome é C9 da plan1,o end é na C10 da Plan1 e o tel é na G9 da Plan1 e eu quero que copie na A1, B1 e C1 da Plan2. Grata.

 
Postado : 17/03/2012 8:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Regina, supondo que os dados da Plan1 estarão sempre nas mesmas celulas que passou, o ajuste na rotina abaixo, copia para a Plan2 a partir da Linha 2 uma vez que acredito que na primeira Linha tenhamos os Cabeçalhos : Nome, Endereço, Fone :

    Sub Transferir()

        Dim iRow_2 As Long 'Variavel para a Linha da Aba Plan2
        
        Dim wsPlan1 As Worksheet 'Aba de nome Plan1
        Dim wsPlan2 As Worksheet 'Aba de nome Plan2
    
        Set wsPlan1 = Worksheets.Application.Sheets("Plan1")
        Set wsPlan2 = Worksheets.Application.Sheets("Plan2")
    
        'Conta e armazena naVariável iRow_2 a última Linha Preenchida
        iRow_2 = wsPlan2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
        'Transfere os dados preenchidos nas Celulas da aba Plan1, neste caso 3
        'e copia para a abaPlan2
        wsPlan2.Cells(iRow_2, 1).Value = wsPlan1.Cells(9, 3).Value
        wsPlan2.Cells(iRow_2, 2).Value = wsPlan1.Cells(10, 3).Value
        wsPlan2.Cells(iRow_2, 3).Value = wsPlan1.Cells(9, 7).Value
    
    End Sub

[]s

 
Postado : 17/03/2012 8:32 pm
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Nossa Mauro, deu muito certo. Era exatamente isso que eu queria, muito obrigada!
Se não te der muito trabalho, dava para incluir a C11 da plan1 na D1 da Plan2?

 
Postado : 17/03/2012 8:47 pm
(@regina)
Posts: 40
Trusted Member
Topic starter
 

Mauro, seguindo o raciocínio, consegui incluir a outra célula. Quebrou uma árvore, galho foi pouco. Muito Grata.

 
Postado : 17/03/2012 8:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Acrescente :

wsPlan2.Cells(iRow_2, 4).Value = wsPlan1.Cells(11, 3).Value

A Lógica seria :
wsPlan2.Cells(iRow_2, 4).Value = Celula(Linha, Coluna),onde a Linha é incrementada pela Variavel iRow.

wsPlan1.Cells(11, 3).Value = Valor da Celula(Linha, Coluna), neste caso o endereço é fixo Linha 11,Coluna 3 = (C11).

[]s

 
Postado : 17/03/2012 8:57 pm