Ir ao conteúdo
  • Cadastre-se

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

 

Postado

Boa Noite @OreiaG

 

Baixei seu arquivo, brinquei um pouco com ele kkk, ai fiz umas alterações no meu arquivo aqui, e aparentemente deu certo meu amigo!

Muito obrigado por mais essa ai! 😉

 

Forte abraço! 😎

  • Curtir 1

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...