Ir ao conteúdo

Excel VBA Procurar cabeçalho em plan2 se encontrar copiar e colar


Ir à solução Resolvido por OreiaG,

Posts recomendados

Postado

Boa Noite Galerinha!

 

Estou precisando de um VBA, acredito que seja possível, ex: 🙃

 

Plan1     Linha 1

      A                       B                   C                    D              E              F

Descrição            GTIN            cliente            Preço                      estoque

Pelúcia                  123               fulano              50          tecido           33

bola                        654               ciclano            28          eva               48

baralho                   989               beltrano          75          plastico         88

 

Plan2   Linha 3

   A                     B                          C                    D

GTIN            Descrição            Preço           estoque

 

123               Pelúcia                  50                 33

654               bola                       28                 48

989               baralho                  75                 88

 

Preciso que o vba leia os cabeçalhos da linha 1 em plan1, vá em plan2 na linha 3 e os cabeçalhos que encontrar, copiar tudo que esta na coluna abaixo do cabeçalho e colar na plan2, mas como no ex, acredito que o vba tenha que fazer coluna por coluna porque, nem sempre os cabeçalhos estarão na mesma ordem, que no ex e a Descrição  GTIN, ou terá alguns em plan1 que não existira em plan2, cliente, e devera ser ignorado e também ser ignorado se estiver vazio, no ex coluna E

 

Perdão se ficou confusa a explicação!   🙈

  • Solução
Postado

Olá, @deejaywesley.

 

Veja se o código abaixo lhe atende.

Não considerei a possibilidade de a tabela da Plan2 ter mais linhas com dados do que a tabela da Plan1, se isso pode ocorrer, então informe o que você deseja fazer nesse caso.

 

Sub ReplicaDados()
 Dim r As Range, rc As Range, rP1 As Range, rP2 As Range, LR As Long
  LR = Sheets("Plan1").Cells(Rows.Count, 1).End(3).Row
  Set rP1 = Sheets("Plan1").Range("A1", Sheets("Plan1").Cells(1, Columns.Count).End(1).Address)
  Set rP2 = Sheets("Plan2").Range("A3", Sheets("Plan2").Cells(3, Columns.Count).End(1).Address)
  Application.ScreenUpdating = False
   For Each r In rP2
    Set rc = rP1.Find(r.Value)
    rc.Offset(1).Resize(LR - 1).Copy r.Offset(1)
   Next r
End Sub

 

  • Curtir 1
Postado

Fala @OreiaG

tudo joia?

me ajudando em mais uma kkkk

 

te fala, quase funcionou 100%, o código copiou as colunas certinho, mas também está copiando as colunas que a célula titulo esta vazia em Plan1.

No exemplo na minha mensagem anterior, em Plan1 a coluna E a célula titulo esta vazia, ai o código tem q ignorar elas, só isso que faltou, o resto ta top.

 

e também está aparecendo uma mensagem de erro no final, ele copia tudo, mas mostra a mensagem de erro...

erro em tempo de execuçao 91

a variável do objeto ou a variável do bloco With não foi definida

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!