Notifications
Clear all

Macro para replicar dados 12 vezes em linhas especificas

7 Posts
3 Usuários
0 Reactions
1,400 Visualizações
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Boa tarde,

Depois de muito quebrar a cabeça para saber como automatizar o cadastro das metas dos representantes no Banco de dados resolvi solicitar uma ajuda!

Tenho um planilha com duas abas "UF REPRES META 2018" e "BD_PET"

Na aba "UF REPRES META 2018" eu tenho os dados da meta dos Representantes, eu preciso que quando eu cadastro um novo representante nesta aba eu clique no Botão "Cadastrar Representantes" e automaticamente os dados de Codigo de representante, Nome Representante e UF, v~~ao automaticamente para a aba "BD_PET" nas devidas coluna D, E , e AG,porém estes dados devem ser repetidos 12 vezes porque temos 12 meses no ano.
Outro desafio é que antes de colar as informações a macro identifique na coluna "A" da aba "BD_PET" se é meta ou realizado, se for meta a Macro vá até a ultima linha da Meta e insira mais 12 linhas e coloque estes valores de acordo com as informações da meta

Tente adaptar uma macro para isto porém ela cola nas linhas erradas.

Você pode me ajudar?

Exemplo da macro que estou usando, mas que cola em linhas erradas:

Sub Cadastrar_Representante()

Dim WCN As Worksheet
Dim WBD As Worksheet
Dim Codigo As String
Dim Representante As Long
Dim Ulinha As Long

Application.ScreenUpdating = False

Set WCN = Sheets("UF REPRES META 2018")
Set WBD = Sheets("BD_PET")
    Navio = WCN.Range("W2").Value
    Tonelada = WCN.Range("X2").Value
    

For a = 1 To 12

Ulinha = WBD.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row

WBD.Cells(Ulinha, 4).Value = Navio
WBD.Cells(Ulinha, 5).Value = Tonelada

Next

WCN.Range("W2").Value = ""
WCN.Range("X2").Value = ""

Application.ScreenUpdating = True

End Sub

Obrigado

 
Postado : 07/02/2018 1:46 pm
(@mprudencio)
Posts: 0
New Member
 

Onde estão as informações quando é meta ou realizado?

De onde vem os dados?

Vc disse que são 12 meses do ano mas nao ficou claro em que celulas esta a informação de cada mes?

O que vc quer fazer não é dificil, mas pra mim nao esta claro onde as informações seram coladas.

 
Postado : 07/02/2018 8:15 pm
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Perdoe Marcelo, não me expressei direito,

A identificação da Meta ou realizado está na coluna "A" da aba "BD_PET", é lá que as informações devem estar inseridas.
O Mês deve estar na coluna "F", da aba "BD_PET", estes meses devem ser inseridos automaticamente de acordo com a inserção de linhas
Exemplo: serão inseridas 12 linhas a primeira = Janeiro, a segunda = Fevereiro...

Os dados virão da aba "UF REPRES META 2018"

Coluna "B" da aba "UF REPRES META 2018" para a coluna "D" da aba "BD_PET
Coluna "C" da aba "UF REPRES META 2018" para a coluna "E" da aba "BD_PET
Coluna "A" da aba "UF REPRES META 2018" para a coluna "AG" da aba "BD_PET

Esta inserção 12 vezes para cada Representante cadastrado na aba "UF REPRES META 2018"

Consegui explicar?

Obrigado.

 
Postado : 08/02/2018 5:37 am
(@mprudencio)
Posts: 0
New Member
 

Eu ainda nao entendi como sera informado se é meta ou realizado.

 
Postado : 09/02/2018 4:06 pm
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Desculpe jovem, pensei que tinha explicado.

Será informado meta!

Obrigado,

 
Postado : 09/02/2018 8:00 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Experimente:

Sub CadastrarRepresentante()
 Dim m As Boolean, Ans, LR As Long
  If Application.CountA([W2:Y2]) < 3 Then Exit Sub
   Ans = MsgBox("É META ?", vbYesNoCancel)
   If Ans = vbYes Then
    LR = Sheets("BD_PET").Range("A:A").Find("Meta", after:=Cells(1, 1), searchdirection:=xlPrevious).Row
    Sheets("BD_PET").Rows(LR + 1 & ":" & LR + 12).Insert
   ElseIf Ans = vbNo Then
    LR = Sheets("BD_PET").[A1].End(4).Row: m = True
   Else: Exit Sub
   End If
    With Sheets("BD_PET")
     .Cells(LR + 1, 1).Resize(12).Value = IIf(m, "Realizado", "Meta")
     .Cells(LR + 1, 4).Resize(12, 2).Value = Range("W2:X2").Value
     .Cells(LR + 1, 33).Resize(12).Value = Range("Y2").Value
     .Cells(LR + 1, 6) = "JAN"
     .Cells(LR + 1, 6).AutoFill Destination:=.Cells(LR + 1, 6).Resize(12), Type:=xlFillDefault
    End With
End Sub

obs.
1. antes de rodar o código limpe a Tabela a partir da linha 170 para baixo
2. preencha W2:Y2 na planilha UF REPRES META 2018 e rode o código
3. na Caixa de Mensagem clique em Sim para Meta ou clique em Não para Realizado ou clique em Cancelar ou fechar (X) para sair

 
Postado : 10/02/2018 5:16 pm
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Fantástico Osvaldo!

Muito Obrigado!

Deu certíssimo, era exatamente o que eu queria!

Deus abençoe!!!

 
Postado : 14/02/2018 2:14 pm