Notifications
Clear all

MACRO PARA COPIAR DE UMA PLANILHA E COLAR VALOR EM OUTRA

7 Posts
3 Usuários
0 Reactions
10.5 K Visualizações
(@brunoh)
Posts: 6
Active Member
Topic starter
 

Boa tarde,
Eu sou novo no forum, e me desculpem se eu abri um tópico que ja foi discutido.
Eu preciso da seguinte ajuda:
Estou criando uma planilha "CONTRATO DE VEICULOS" que contém dados que precisam ser transferidos para outra planilha "DISPONIBILIDADE GERAL" (outro documento do excel).

Seria o seguinte:
Eu preciso copiar os as células E39 e E40 da planilha CONTRATO DE VEICULOS, aba DISPONIBILIDADE DIARIA - abrir a planilha DISPONIBILIDADE GERAL, aba CONSOLIDADO, e colar somente os valores (CTRL+ALT+V) nas células C e D (respectivamente), contudo preciso que seja copiado nas celulas vazias a partir da linha 5.

Eu preciso geral um relatório diário e isso me ajudaria muito!

Desde já Agradeço,

Bruno Olimpio

 
Postado : 24/05/2013 9:32 am
(@vitor)
Posts: 57
Trusted Member
 

Adapte:

Sub Colar()
Dim ultima As Long

ultima = Plan2.Range("A1048576").End(xlUp).Row 'verifica qual a ultima celula preenchida

If Plan2.Range("A1").Value = "" Then
    Else
    ultima = ultima + 1
    End If

    ActiveCell.Select 'A Célula atual (que você quer copiar)
    Selection.Copy 'Copiando a célula
    Sheets("Plan2").Select 'Selecionando a Plan2
    Range("A" & ultima).Select 'Selecionando onde você quer colar
    Selection.PasteSpecial Paste:=xlPasteValues 'colando (só os valores) ;D
    Application.CutCopyMode = False 'Cancelando a cópia da primeira

End Sub

atendeu ?

 
Postado : 24/05/2013 10:52 am
(@brunoh)
Posts: 6
Active Member
Topic starter
 

Boa tarde Vitor,

Eu ainda não consegui fazer que funcione, ficou assim:

Sub Colar()
Dim ultima As Long

ultima = Plan2.Range("E40").End(xlUp).Row

If Plan2.Range("E39").Value = "" Then
Else
ultima = ultima + 1
End If

ActiveCell.Select
Selection.Copy
Sheets("DISP GERAL").Select
Range("C" & ultima).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

End Sub

Esta errado em alguma coisa?

Dessa forma eu consigo colar nas colocas C e D respectivamente?

 
Postado : 24/05/2013 11:47 am
(@vitor)
Posts: 57
Trusted Member
 

Seu erro (creio eu) está na

ultima = Plan2.Range("E40").End(xlUp).Row

Essa linha faz o seguinte : Pega a última célula da linha x (Por isso que usei o nº "1048576", no seu caso está pegando a 40ª linha) e vai "subindo". A primeira linha não vazia que ele encontra ele pega o nº da linha.
Por isso coloquei o

ultima = ultima + 1

Pra colar nas colunas C e D você deve adicionar uma linha abaixo da Range("C"&ultima).select

Range("D" & ultima).Select
Selection.PasteSpecial Paste:=xlPasteValues

Para adaptar ao seu código mude apenas as Colunas das células ("A","B","C"...) e o nome da planilha.

Se não entendeu me mande sua planilha para que eu possa dar uma olhada.

 
Postado : 24/05/2013 12:22 pm
(@brunoh)
Posts: 6
Active Member
Topic starter
 

Boa Noite,

Acabou que mudei um pouco a minha necessidade:
Acredito que com esse novo metódo me farei mais facil de entender. Eu preciso copiar a célula "E39" ir para a aba "DISPONIBILIDADE DIARIA" colar somente os valores na célula "C11" e toda vez que eu ativar a macro ir colando os valores abaixo da última célula preenchida.
Exemplo:
Usei a macro: Copiar a "E39", colar em especial na "C11" da aba informada;
Usei a macro em outro momento: Copiar a "E39", colar em especial na "C12" da aba informada. E assim continuamente.

O código que estou usando é o seguinte:

Sub COLIP()
'
' COLIP Macro
' COPIAR E COLAR EM ESPECIAL
'

'
Range("E39").Select
Selection.Copy
Sheets("DISPONIBILIDADE MENSAL").Select

If Range("C11") = "" Then ' Se a célula próxima for vazia.

Else
Range("C11").Select
linha = ActiveCell.Row + 1
End If

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("DISPONIBILIDADE DIARIA").Select
End Sub

Preciso muito completar esse trabalho.

Agradeço desde já pela ajuda!

 
Postado : 29/05/2013 4:37 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bruno, tente a rotina abaixo, só ajuste os nomes das Abas:

Sub CopiaColaValores()
  
    Dim UltimaLinha As Long
    Dim RngACopiar As Range
    
    'Define o Range a ser Copiado
    Set RngACopiar = Worksheets("Plan1").Range("E39")
    
    'Copia
    RngACopiar.Copy
    
    'Verifica a ultima linha preenchida na Coluna 3(C) da Plan2(Destino)
    UltimaLinha = Worksheets("Plan2").Cells(Rows.Count, 3).End(xlUp).Row
    
    'Se for menor que 11 - ou seja se C11 estiver Vazia
    If UltimaLinha < 11 Then
        UltimaLinha = 11
        Worksheets("Plan2").Range("C" & UltimaLinha).PasteSpecial Paste:=xlPasteValues
        
    Else
    
        UltimaLinha = UltimaLinha + 1
        Worksheets("Plan2").Range("C" & UltimaLinha).PasteSpecial Paste:=xlPasteValues
        
    End If
    
    Application.CutCopyMode = False
    
    End Sub

[]s

 
Postado : 30/05/2013 7:05 pm
(@brunoh)
Posts: 6
Active Member
Topic starter
 

Mauro,

Muito Obrigado, funcionou muito bem!

 
Postado : 31/05/2013 7:49 am