Página 1 de 1

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 10:33
por philippemilioni
Bom dia

Estou tentando copiar algumas linhas e colunas de uma planilha para outra, sendo que essas linhas e colunas são alteradas em função da seleção feita em uma caixa suspensa.
Tentei dessa maneira, mas não obtive exito

Sub copiarDadosEntrePlanilhas()

'Copiar dados
Sheets("Cadastro IT 07").Range("B55:X76").Copy
'Ativa a planilha de destino
Sheets("IT-07").Activate
'Seleciona o intervalo de destino
Range("C67").Select
'Cola os dados no destino
ActiveSheet.Paste

Application.CutCopyMode = False

End Sub

Alguém pode me dar uma idéia?
Grato

Re: Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 10:39
por eduardogrigull
Olá,
Voce nao precisa ativar a planilha durante a cópia. Só precisa especificar qual planilha colar
Código: Selecionar todos
'Copiar dados
Sheets("Cadastro IT 07").Range("B55:X76").Copy

'Cola os dados no destino
Sheets("IT-07").Range("C67").PasteSpecial xlPasteValues

Application.CutCopyMode = False

End Sub

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 11:18
por philippemilioni
Consegui copiar de uma planilha para outra.
Entretanto ainda não está da maneira que deveria.
Quando seleciono uma opção na caixa de seleção, não altera as linhas que devem ser copiadas
Por exemplo
opção 1 - sem linhas para cópia
opção 2 - copiar linhas 55 a 68 (Colunas B até X)
Opção 3 - copiar linhas 69 a 76 (Colunas B ate X)
tem como resolover?

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 13:14
por eduardogrigull
Voce usa um ComboBox pra filtrar entre essas três opções? A primeira opção é não copiar nada então?

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 13:26
por philippemilioni
Uso uma caixa de seleção com essas tres opções:
Opção 1: Não foram considerados fatores redutores de distância. (sem linhas para cópia)
Opção 2: Os fatores especificados na Tabela B-1, considerando as fachadas que recebem exposição de calor proveniente de edificações adjacentes localizadas dentro do mesmo lote. copiar linhas 55 a 68 (Colunas B até X)
Opção 3: Sendo a edificação com até 12 m de altura e 750 m² de área, foram utilizados os fatores especificados na Tabela 3.
copiar linhas 69 a 76 (Colunas B ate X)

Re: Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 13:47
por eduardogrigull
Assim funciona? Botei a ação num CommandButton, e um script de cópia. De acordo com a opção selecionada no campo de listagem ele copia... Voce precisa alterar o nome do botão e do listbox
Código: Selecionar todos
Dim rgn As String
Private Sub CommandButton1_Click()

If ListBox1.ListIndex = 0 Then
    'Nao fazer nada
ElseIf ListBox1.ListIndex = 1 Then
    'Copiar 55-68
    rng = "B55:X68"
    Call Copiar
Else
    'Copiar 69-76
    rng = "B69:X76"
    Call Copiar
End If
End Sub

Sub Copiar()

'Copiar dados
Sheets("Cadastro IT 07").Range(rng).Copy

'Cola os dados no destino
Sheets("IT-07").Range("C67").PasteSpecial xlPasteValues

Application.CutCopyMode = False

End Sub

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 14:04
por philippemilioni
Vou testar, mas gostaria que fosse feita de forma automática, sem a necessidade de uma ação (botão)

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 14:57
por eduardogrigull
Daí vou precisar que voce anexe o arquivo. Ai fica bem mais fácil e rapido

Re: Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 15:18
por philippemilioni
Aí esta a planilha que estou trabalhando.

Re: Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 19:13
por eduardogrigull
Consegui.
Voce precisa adicionar nas propriedades da Planilha 25 (Cadastro IT 07), na opcao WorksheetChanges: "Call Copiar"


E logo abaixo inserir:
Código: Selecionar todos
Sub Copiar()
Dim rng As String


If Plan25.Range("B52").Value = Plan25.Range("BD29").Value Then
    'Nao fazer nada
    Exit Sub
ElseIf Plan25.Range("B52").Value = Plan25.Range("BD30").Value Then
    'Copiar 55-68
    rng = "B55:X68"
ElseIf Plan25.Range("B52").Value = Plan25.Range("BD31").Value Then
    'Copiar 69-76
    rng = "B69:X76"
Else
    Exit Sub
End If


'Copiar dados
Sheets("Cadastro IT 07").Range(rng).Copy

'Cola os dados no destino
Sheets("IT-07").Range("C67").PasteSpecial xlPasteValues

Application.CutCopyMode = False

End Sub
Ou ver o anexo talvez seja mais facil

Copiar dados automaticamente entre abas

Enviado: 27 Jul 2019 às 20:19
por philippemilioni
Opa!!! Valeu Eduardo
Agora está funcionando.
Mas tenho uma dúvida ainda.
Qdo faço a escolha na caixa de seleção, por exemplo a opção 2 e depois se eu alterar para a opção 1 ou 3, na Planilha que vai ser colado Plan23 (IT 07) ainda fica o que foi colado na opção anterior.
Mas agradeço muito pela ajuda, não manjo nada de VBA

Re: Copiar dados automaticamente entre abas

Enviado: 28 Jul 2019 às 07:08
por eduardogrigull
Tinha me esquecido disso. Corrigido... se quiser é só substituir o codigo do Sub Copiar, ou baixar o anexo de novo
Código: Selecionar todos

Sub Copiar()
Dim rng As String


If Plan25.Range("B52").Value = Plan25.Range("BD29").Value Then
    'Nao fazer nada, somente limpar antes
    Plan23.Range("B67:Y79").Value = Empty
    Exit Sub
ElseIf Plan25.Range("B52").Value = Plan25.Range("BD30").Value Then
    'Copiar 55-68
    rng = "B55:X68"
ElseIf Plan25.Range("B52").Value = Plan25.Range("BD31").Value Then
    'Copiar 69-76
    rng = "B69:X76"
Else
    Exit Sub
End If

'Limpar antes
Plan23.Range("B67:Y79").Value = Empty


'Copiar dados
Sheets("Cadastro IT 07").Range(rng).Copy

'Cola os dados no destino
Sheets("IT-07").Range("C67").PasteSpecial xlPasteValues

Application.CutCopyMode = False

End Sub

Copiar dados automaticamente entre abas

Enviado: 29 Jul 2019 às 08:46
por philippemilioni
Bom dia.
Eduardo, agora ficou excelente.
Vou tentar entender os códigos para aprender.
Agradeço imensamente,
abs