Extrair informações...
 
Notifications
Clear all

Extrair informações e colar na plan2 sequencialmente

4 Posts
2 Usuários
0 Reactions
1,094 Visualizações
(@ideias-alex)
Posts: 29
Eminent Member
Topic starter
 

Bom Dia, gostaria que me ajudassem com um probleminha que tenho na minha humilde planilha. rs

Seguinte, eu quero criar uma macro, que no momento em que eu clicar em imprimir a planilha, essa macro copie alguns dados da planilha e cole sequencialmente na plan2.

Vou postar a planilha, talvez fique mais claro.

ah, se possível, gostaria de gerar um código para cada lançamento na plan2 para, se necessário, carregar os dados da plan2 na planilha 1 para reimpressão a partir do código gerado.

Essa é complicada hein?! :mrgreen: :D

Agradeço
Alexandre Alves
Administração de Empresas

 
Postado : 23/01/2013 6:44 am
gamboaisrael
(@gamboaisrael)
Posts: 68
Trusted Member
 

Alexandre,

veja se o anexo lhe atende.

A idéia é que você deverá inserir um numero para cada novo RPA. Caso você insira um número que já foi utilizado, ocorrerá o preenchimento automático dos campos do mesmo. Ok?

Faça os testes e dê retorno.

Att.,

gamboaisrael .'.

 
Postado : 23/01/2013 8:19 am
(@ideias-alex)
Posts: 29
Eminent Member
Topic starter
 

Muito Boa a Planilha, muito obrigado, do jeito que ela tá vai funcionar.

Agradeço.
E sinceramente, Não tenho idéia de como foi feita, isso me intriga.. KKKKKKK

Mesmo assim, valeu!

 
Postado : 23/01/2013 12:39 pm
gamboaisrael
(@gamboaisrael)
Posts: 68
Trusted Member
 

Alexandre, temos três rotinas pra fazer o aquilo que você havia pedido.

Quando você clica no botão "Imprimir" dispara a rotina chamada Imprimir:

Public Sub Imprimir()
Dim linha As Long 'Declarando a variável linha que servirá para guardar a informação referente à última linha preenchida da planilha 2.

    ActiveWindow.SelectedSheets.PrintPreview 'Este é o comando para abrir a janela de visualização da impressão.
    Worksheets(2).Select
    
    linha = Cells(Cells.Rows.Count, 7).End(xlUp).Row + 1 'Aqui nós inserimos em linha o valor da última linha preenchida na plan2.
    
    'Daqui em diante estamos só copiando os valores da plan1 para a plan2.
Worksheets(2).Range("A" & linha).Value = Worksheets(1).Range("C3").Value
Worksheets(2).Range("B" & linha).Value = Worksheets(1).Range("E4").Value
Worksheets(2).Range("C" & linha).Value = Worksheets(1).Range("K5").Value
Worksheets(2).Range("D" & linha).Value = Worksheets(1).Range("I14").Value
Worksheets(2).Range("E" & linha).Value = Worksheets(1).Range("I21").Value
Worksheets(2).Range("F" & linha).Value = Worksheets(1).Range("B36").Value & " " & Worksheets(1).Range("A37").Value
Worksheets(2).Range("G" & linha).Value = Worksheets(1).Range("H44").Value
Worksheets(2).Range("H" & linha).Value = Worksheets(1).Range("L2").Value

Worksheets(1).Select 'Voltamos a selecionar a plan1.

End Sub

Quando você altera a célula "L2" (Número do RPA) a seguinte rotina roda no evento change da plan1:

Private Sub Worksheet_Change(ByVal Target As Range)

'O objetivo aqui é fazer com que a rotina "CarregaRPA" tode apenas quando a célula "L2" for alterada. O evento change, por padrão, executa os comandos quando qualquer célula da planilha for alterada

Static rng As Variant
   
  If IsEmpty(rng) Then
   rng = Range("L2")
   End If
   
  If rng = Range("L2") Then Exit Sub
rng = Range("L2")

Call CarregaRPA 'Chama a rotina "CarregaRPA"

End Sub

Após a verificação se a célula alterada foi, realmente, a "L2", chamamos a rotina "CarregaRPA" que é descrita abaixo:

Public Sub CarregaRPA()
Dim linha As Long, X As Long 'Declarando a variável linha que servirá para guardar a informação referente à última linha preenchida da planilha 2 e a variável X que servirá para preencher a linha durante o loop que iremos executar.

linha = Cells(Cells.Rows.Count, 8).End(xlUp).Row 'Armazenando o numero da última linha preenchida na plan2.

For X = 2 To linha 'Executamos um loop para verificar em todos os registros presentes na plan2, se algum corresponde ao valor presente na célula "L2" (Número do RPA). Caso o valor seja encontrado, copiamos as informações deste registro para a plan1.
    If Worksheets(2).Cells(X, 8).Value = Worksheets(1).Range("L2").Value Then
    Worksheets(1).Range("C3").Value = Worksheets(2).Range("A" & X).Value
    Worksheets(1).Range("E4").Value = Worksheets(2).Range("B" & X).Value
    Worksheets(1).Range("K5").Value = Worksheets(2).Range("C" & X).Value
    Worksheets(1).Range("I14").Value = Worksheets(2).Range("C" & X).Value
    Worksheets(1).Range("I21").Value = Worksheets(2).Range("E" & X).Value
    Worksheets(1).Range("B36").Value = Worksheets(2).Range("F" & X).Value
    Worksheets(1).Range("H44").Value = Worksheets(2).Range("G" & X).Value
    Worksheets(1).Range("L2").Value = Worksheets(2).Range("H" & X).Value
    End If
Next
End Sub

Espero que ajude a compreender o código. Apertando as teclar Alt+F11 você poderá observar o código através do VBE.

Se tiver alguma dúvida ou precisar de algo, é só falar.

Att.,

gamboaisrael .'.

 
Postado : 23/01/2013 1:10 pm