Notifications
Clear all

Macro para controle de pontos para troca de produtos

28 Posts
3 Usuários
0 Reactions
5,113 Visualizações
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Boa noite, galera, estou fazendo um controle de pontos onde meus clientes a medida que vendem os produtos da empresa e fazem os procedimentos certinho acumulam pontos e podem trocar por outros produtos como cafeteira, liquidificador, ferro etc.

Segue o link da planilha na nuvem para que vocês vejam como ela é, e a mesma planilha deixo em anexo. Como ela espelha informações de uma outra planilha a do anexo provavelmente vai ter varias " #ref " mas a da nuvem da pra dar uma sacada.

No caso quando as informações forem preenchidas na outra planilha, essa que está em anexo de nome "Altech clube.xslm" irá mostrar as informações obtidas de cada cliente naquele mês e a iremos na coluna verde da aba CONSOLIDADOS e colocaremos os pontos adiquiridos naquele mês de acordo com a tabela da aba REFERÊNCIA que mostra qual a pontuação por ter atingido cada resultado. Esses dados digitados na aba CONSOLIDADOS precisam ir para as abas de cada cliente, cada cliente possui um código por exemplo na aba CONSOLIDADO na celula A4 temos o numero 100 que é o mesmo da aba que leva o mesmo nome 100. E assim temos do 100 ao 120. a medida que vamos colocando as informacoes nas linhas de cada cliente os dados precisam ir pra aba de cada cliente de sua numeração com: a pontuacao digitada, o titulo da coluna de consolidado como item de descrição, e a data atual da inserção daquele dado. Sempre um abaixo do outro infinitamente até apagarmos os dados e ele ir preenchendo sempre abaixo um do outro. Quando o mês virar apertaremos no botão limpar dados que vai apagar tudo que tem nas colunas verdes da aba CONSOLIDADOS, porém nas abas dos clientes vai permanecer o que foi digitado por isso o nome EXTRATO e lá na de cada um deles tem o valor total de pontos acumulados para termos todo o controle dos pontos com suas datas a descrição do porque daquela pontuação e etc.

Poderia ser um botao que após digitar todas as informacoes na coluna verde que sao as: C, I, M, O, R, T, V na aba consolidados ele copiasse e colasse nas abas de cada cliente em cada planilha separada. Se n tiver como copiar a data n tem problema depois eu crio mais uma coluna com a data e quando apertar o botao ele ja copiava também.

Se possível for após 365 dias os pontos que tiverem obterem essa quantidade de dias vao sendo automaticamente sendo apagados linha por linha, pois o cliente precisa trocar os pontos dentro desse prazo e quando ocorrer iremos apagar manualmente e subir as informações pro topo da tabela. Mas se nao tiver nao tem problema eu faço esse controle manualmente mesmo. Ou se tivesse um botao que apagasse quando a gente apertar ele visse quem ja tinha mais de 365 dias e apagava, mas se nao tiver como nao teria problema.

O mais importante é o botao ou o código que copiasse as informacoes do CONSOLIDADO e fosse fazendo um historico pra cada panilha um controle mes a mes.
Pois a cada mes a gente apaga os dados consolidados pra lançar as novas metas daquele mes e digitar as novas pontuacoes e ficaria tudo no historico deles registrado. e a celula e3 ja vai somando o total de pontos. Somando ou diminuindo quando a gente botasse uma pontuacao com sinal de menos ele diminuiria.

link da planilha no drive: https://drive.google.com/open?id=1A2Hi4 ... meorifROpc

Alguém pode me ajudar ou dar um norte sobre esse macro?

Agradeço desde já ajuda de vocês.

 
Postado : 01/02/2018 10:49 pm
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Alguem sabe me dizer se tem como fazer ou algo parecido pra ter esse controle separadamente de cada cliente de pontos? Todas as abas de 100 a 120 o local a ser preenchido eh sempre o mesmo eu so fiz os tres primeiros pq n sabia se teria como ser feito. Alguem pode me dar uma luz?

 
Postado : 02/02/2018 12:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kayomaster, se entendi corretamente, o que pretende daria para fazer com formulas, sem precisar de macros, uma vez que tem a lista (consolidado) com os códigos e uma aba para cada código.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/02/2018 1:46 pm
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

olá, é porque a aba consolidados seria apenas para alimentar as informacoes daquele mês, e quando apertasse o botao ou algo assim eles iriam para o historico de cada planilha, porque quando virar o mês a aba consolidado ficara em branco. as formulas que possui na aba consolidado é apenas pra gente vizualizar se ele atingiu aquela meta ou não para escrevermos a pontuação feito isso com todos as informacoes vão para os extratos de cada um (100, 101, 102...).

E eu também disponibilizo o acesso deles por um link no drive similar ao que coloquei sendo que espelhando os dados de cada um separadamente. eu tenho uma planilha com o nome de 100.xlsm, 101.xlsm, 102.xlsm ... que so faz repetir a informacao que tem em altech clube.xslm referente aquela aba específica.

porque se for apenas com formulas quando apagar os dados da consolidados as informacoes das demais abas vao apagando, e seria bom ficar um histórico porque vamos supor daqui a seis meses o meu cliente pode questionar alguma pontuacao e a gente tem tanto o historico nessa planilha como tambem eu ja tenho por outra planilha o controle do mes dele ficaria mais facil para localizar e passar a informacao.

a planilha altech clube.xslm sempre vai mudando quando o mês vira, sendo que o arquivo é sempre o mesmo. entendeu mais ou menos?

 
Postado : 03/02/2018 7:41 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

um cliente meu ja mandou pra mim a relacao das vendas e etc, ai eu ja alimentei a celula altech clube voce pode dar uma olhada no link do drive pra ver como seria pra ficar, cada cliente meu tem um prazo pra me mandar a relacao de vendas ai no caso depois que eu preenche-se todas ai eu apertaria esse botao e ele lancaria. eu até coloquei a mão la na aba 108 seria pra ficar assim, ai quando o mes virasse eu limparia os dados da aba consolidados e alimentaria do proximo mes e ele ia colocando la abaixo dando continuidade ao acumulo de pontos.

poderia até ser duas macros uma dela ja alimentar a pontuacao de acordo com o que foi atingido e outra pra lancar ja na aba de cada cliente, não sei eu não até onde se pode ir em macros mas so em ele copiar o consolidados e mandar pras abas ja facilita, porque voce imagina so isso tudo manual, e quando eu tiver 40 clientes, é uma loucura! porque eu ja tenho um trabalho danado na outra planilha que controla as vendas e estoque etc.

se tiver ideias tambem sou muito aberto. obrigado pela ajuda.

 
Postado : 03/02/2018 8:08 am
(@klarc28)
Posts: 971
Prominent Member
 

Kayo, para que possamos te ajudar, é necessário que você apresente códigos e explique qual parte não está conseguindo fazer. Por isso, a seguir estão alguns vídeos para estudo.

Para copiar dados de uma planilha para outra:

https://www.youtube.com/results?search_query=vba+copiar+dados+de+uma+planilha+para+outra

 
Postado : 03/02/2018 12:54 pm
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

No caso eu nao entendo muito de macro preciso de um vba freelancer pra criar esse sistema de pontos. Alguem sabe o contato de alguem? Pq pela intenet n axei ngm. Caso aqui tenha algum deixo meu zap (84) 996270227

Porque eu queria so q ele copiasse os dados de consolidados e fosse botando na sua respectiva aba mas n sei fazer esse botao.

 
Postado : 03/02/2018 1:51 pm
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Eu olhei os videos mas n consegui fazer e eles nao fazem o q eu to precisando. Eu tenho um codigo aqui de gerar pedidos em vba ele teria que fazer o mesmo processo inverso. Copiar o q tem na planilha consolidados e colar em cada planilha respectiva uma abaixo da outra sem apagar o que ja esta preenchido. Aqui esta o codigo:

Sub Pedidos()
    '=========================================================================================
    'Código VBA desenvolvido por Wagner Morel, em 15/07/2017, para kayomaster, integrante do _
    do fórum planilhando, para Gerar relatório de Pedido dos Mercadinhos
    '=========================================================================================
    'Declaração de variáveis
    Dim i As Long
    Dim j As Long
    Dim UltimaLinha As Long
    Dim Linha As Long
    
    'Desabilita atualizações de tela
    Application.ScreenUpdating = False
    
    'Atribui a linha 3 como sendo a primeira da aba Pedidos
    Linha = 3
    
    'Limpa a aba Pedidos
    'Pega a última linha com dados da aba Pedidos pela coluna A
    UltimaLinha = Sheets("pedidos").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    'Certifica-se que os dados comecem na linha 2
    If UltimaLinha < 2 Then UltimaLinha = 2
    'Seleciona a aba Pedidos
    Sheets("pedidos").Select
    'Seleciona todos os dados
    Range("A3:D" & UltimaLinha).Select
    'Limpa os dados
    Selection.ClearContents
    'Seleciona a célula A1
    Range("A1").Select
    'Volta para a aba Geral
    Sheets("GE").Select
    
    'Laço para percorrer todas as abas
    For j = 1 To Sheets.Count
        'Verifica o nome das abas e exclui as que não interessam
        If Sheets(j).Name <> "GE" And Sheets(j).Name <> "Planilha" And Sheets(j).Name <> "Imprimir" And Sheets(j).Name <> "pedidos" And Sheets(j).Name <> "C & C" And Sheets(j).Name <> "V & L" And Sheets(j).Name <> "EVOL." And Sheets(j).Name <> "V. IND" And Sheets(j).Name <> "EST" And Sheets(j).Name <> "recibo" And Sheets(j).Name <> "CAD." And Sheets(j).Name <> "VENDAS A PRAZO" And Sheets(j).Name <> "PERDAS & ROUBOS" And Sheets(j).Name <> "FOR." And Sheets(j).Name <> "PR E ESTQ" And Sheets(j).Name <> "HISTORICO" And Sheets(j).Name <> "FORNECEDORES" And Sheets(j).Name <> "121P" And Sheets(j).Name <> "122P" And Sheets(j).Name <> "123P" And Sheets(j).Name <> "124P" And Sheets(j).Name <> "125P" And Sheets(j).Name <> "ImprimirPRE" And Sheets(j).Name <> "reciboPRE" And Sheets(j).Name <> "EVOL2" Then
            'Seleciona a aba que interessa
            Sheets(j).Select
            'Pega a última linha com dados da aba ativa pela coluna A
            UltimaLinha = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
            'Certifica-se que os dados comecem na linha 3
            If UltimaLinha < 3 Then UltimaLinha = 3
            'Laço para percorrer todas as linhas da planilha ativa
            For i = 3 To UltimaLinha
                'Verifica se a coluna D contém alguma coisa
                If Range("D" & i).Value <> "" Then
                    'Copia os dados para a aba Pedidos
                    Sheets("Pedidos").Range("A" & Linha).Value = ActiveSheet.Name
                    Sheets("Pedidos").Range("B" & Linha).Value = ActiveSheet.Range("A" & i).Value
                    Sheets("Pedidos").Range("C" & Linha).Value = ActiveSheet.Range("B" & i).Value
                    Sheets("Pedidos").Range("D" & Linha).Value = ActiveSheet.Range("D" & i).Value
                    Sheets("Pedidos").Range("E" & Linha).Value = ActiveSheet.Range("E" & i).Value
                    'Incrementa a linha da aba Pedidos
                    Linha = Linha + 1
                End If
            Next
        End If
    Next
    'Exibe mensagem de sucesso
    MsgBox "Pedidos Gerados com Sucesso!", vbDefaultButton1, "RELATÓRIO DE PEDIDOS"
    'Volta para a aba Geral
    Sheets("pedidos").Select
    'Volta a habilitar as atualizações de tela
    Application.ScreenUpdating = True
End Sub

Ai no caso ele copiaria as colunas C, I, M, O, R, T, V quando apertasse o botao e iria colar de acordo com a linha em cada aba dessa mesma planilha 100 a 120 pegando o numero dos pontos o titulo de cada coluna que colaria na descricao e a data atual sempre abaixo um do outro sem apagar dados. porque o desse codigo ele apaga tudo. comeca da linha 4 onde a coluna A é descricao a B os pontos e C a data nas planilhas de 100 a 120 que tem dentro do arquivo altech clube.xlsm .

é isso...

** Editei sua postagem para colocar a rotina entre as tags

, favor sempre que colocar rotinas usar as tags. Grato. - Mauro Coutinho - Moderador

 
Postado : 03/02/2018 11:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kayomaster, me esclareça.

Você diz que irá digitar nas colunas verdes, e teremos de transferir de acordo com o codigo para a respectiva aba, até ai tudo bem, só que cita em copiar "as colunas C, I, M, O, R, T, V" e colar nas abas, mas na aba destino só temos 5 colunas para lançamento, e tambem não compreendi de onde tirou a descrição, pois não encontrei ela na aba CONSOLIDADO.

Para simplesmente copiar "as colunas C, I, M, O, R, T, V" percorrendo cada código na coluna A e colar nas respectivas abas, pode usar a rotina abaixo, veja se ajuda e se consegue ajustar, senão de mais detalhes.

Sub Copy_Consolidado()
    Dim Linha As Long
    Dim sLinSheets As Long
    Dim sRG As Range
    Dim sCodigo
    Dim sRow As Long
    Dim sSht As Worksheet
    Dim ShtCONSOLIDADO As Worksheet
    Dim wb As Workbook
    Set wb = ThisWorkbook
    
    Set ShtCONSOLIDADO = wb.Sheets("CONSOLIDADO")
    
    Linha = ShtCONSOLIDADO.Range("A2").End(xlDown).Row
    
    Set sRG = ShtCONSOLIDADO.Range("A4:" & "A" & Linha)
    
        For Each x In sRG
          
            sCodigo = x.Value
          
            Set sSht = wb.Sheets(CStr(sCodigo))
           
            sLinSheets = sSht.Range("A2").End(xlDown).Row + 1
           
            sRow = x.Row
           
            ShtCONSOLIDADO.Range("C" & sRow & ", I" & sRow & ",M" & sRow & ", O" & sRow & ",R" & sRow & ", T" & sRow & ",V" & sRow).Copy Destination:=sSht.Range("A" & sLinSheets)
          
            Codigo = x
        
        Next

End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/02/2018 12:35 am
(@klarc28)
Posts: 971
Prominent Member
 

Kayo,

Quando colocar código neste fórum, aperte o botão Code

Vou apenas comentar o código do Mauro, talvez seja útil.

Sub Copy_Consolidado()

'Declaração de variáveis
    Dim Linha As Long
    Dim sLinSheets As Long
    Dim sRG As Range
    Dim sCodigo
    Dim sRow As Long
    Dim sSht As Worksheet
    Dim ShtCONSOLIDADO As Worksheet
    Dim wb As Workbook
'wb passa a ser esta pasta de trabalho
    Set wb = ThisWorkbook
'ShtCONSOLIDADO passa a ser a planilha CONSOLIDADO     
    Set ShtCONSOLIDADO = wb.Sheets("CONSOLIDADO")
'Linha é a última linha preenchida na coluna A da planilha CONSOLIDADO    
    Linha = ShtCONSOLIDADO.Range("A2").End(xlDown).Row
'sRG é o intervalo que vai de A4 até A + última linha preenchida
    
    Set sRG = ShtCONSOLIDADO.Range("A4:" & "A" & Linha)
  'Para cada célula dentro do intervalo  (x representa uma célula)
        For Each x In sRG
          'sCodigo  vai ser o valor da célula atual
            sCodigo = x.Value
           'sSht vai ser a planilha que está nesta pasta de trabalho e o nome desta planilha será o sCodigo convertido para String
            Set sSht = wb.Sheets(CStr(sCodigo))
           'SLinSheets é o intervalo que vai de A2 até a linha que está abaixo da última linha preenchida do coluna A
            sLinSheets = sSht.Range("A2").End(xlDown).Row + 1
           'sRow é a linha da célula atual
            sRow = x.Row
           'As células das colunas C, I, M, O, R, T, V serão copiadas e coladas a partir da célula A + sLinSheets da planilha cujo nome está guardado em sCodigo
            ShtCONSOLIDADO.Range("C" & sRow & ", I" & sRow & ",M" & sRow & ", O" & sRow & ",R" & sRow & ", T" & sRow & ",V" & sRow).Copy Destination:=sSht.Range("A" & sLinSheets)
          'Codigo vai ser o valor que estiver na célula
'Confesso que não entendi a finalidade desta linha e me pergunto se não seria sCodigo em vez de Codigo.
            Codigo = x
        
        Next

End Sub
 
Postado : 04/02/2018 5:14 am
(@klarc28)
Posts: 971
Prominent Member
 

Confesso que não entendi a finalidade desta linha e me pergunto se não seria sCodigo em vez de Codigo. Mesmo fazendo a correção, esta linha é mesmo necessária?

 Codigo = x

Kayo, aqui estão dois vídeos relacionados:

https://www.youtube.com/watch?v=dUGlykRbd7c
https://www.youtube.com/watch?v=2VHsdE3YV6k

Links relacionados:

https://www.google.com.br/search?q=vba+consolidar+dados+em+uma+planilha&oq=vba+consolidar+dados+em+uma+planilha&aqs=chrome..69i57.12853j0j7&sourceid=chrome&ie=UTF-8
http://www.planilhando.com.br/forum/search.php?keywords=consolidar&fid%5B0%5D=10

 
Postado : 04/02/2018 6:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Confesso que não entendi a finalidade desta linha e me pergunto se não seria sCodigo em vez de Codigo. Mesmo fazendo a correção, esta linha é mesmo necessária?

 Codigo = x

Klarc28, de fato esta Variável deveria ser sCodigo, e realmente a mesma não deveria estar ai, uma vez que já se encontra no inicio, acontece que qdo montei a rotina não fiz baseado no modelo que ele enviou, e quando fiz a indentação e ajuste para o modelo dele ela acabou ficando ali e não percebi.

Grato pela observação.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/02/2018 9:51 pm
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Oi gente Mauro e Klarc ambas eu nao consegui obter sucesso quando aperto o botao eles apagam as colunas e nao vai pra lugar nenhum. uso o office 2010 num sei se é isso. Mas como voces ficaram na duvida vou tentar explicar melhor.

as colunas verdes que são C, I, M, O, R, T, V fica na aba de consolidados e o nome de cada aba (100,101,102..) se repete na coluna A da aba consolidados. a linha inteira de cada numero é o que precisa ser copiado e colado cada um na sua aba da planilha (100,101,102..).

A descrição de cada uma fica na segunda linha de consolidados. com isso temos a célula C2: Aniversario do stand, I2: PONTO ANIVERSARIO REVENDEDOR, M2: PONTO ENVIO NO DIA, e assim sucessivamente, e a data atual que eu posso criar mais uma coluna por exemplo uma coluna Z com a data pra o macro simplesmente copiar a informação pras abas (100,101,102...) ou na hora que apertar o botao ele ja joga a data atual na coluna C das abas (100,101,102..)

a macro vai copiar essas informacoes da aba consolidado e vai colar a partir da linha 4 caso nao ja possua informações escritas sempre abaixo um do outro,
onde a coluna A é descrição, a B sao os pontos digitados la nas colunas verdes e a data que seria a data atual. Se possivel for não ha necessidade de apagar as informações copiadas de consolidados. haverá ja tem um outro botão (macro) pra apagar os dados quando isso for necessário da aba de consolidados.

ah e no caso o nomes das abas vao de 100 a 120.

é isso...

 
Postado : 05/02/2018 10:37 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kayomaster, a versão do excel a principio não tem nada a ver, e a rotina não tem nenhuma instrução de apagar as informações, simplesmente copia e cola, mas como eu comentei na postagem anterior, não compreendi uma vez que diz "copiar as colunas C, I, M, O, R, T, V e colar nas abas, mas na aba destino só temos 5 colunas para lançamento", e agora você diz em copiar a linha inteira ? e olhando o link com o exemplo, a informação referente ao código 108 foram transferidos os dados referentes a 4 colunas somente e pelo que estou supondo seriam somente das colunas com dados e não das 7 colunas verdes, e tambem os dados estão sendo colados não em uma linha e sim estão sendo transpostos.
Pelo que estou vendo, teria de verificar a coluna que tem dados, em seguida o rótulo a que pertence e ir transferindo sempre na proxima linha, e outra coisa que ficou confuso é referente a criar mais uma coluna com data, esta data não seria a da data de abertura ?
Veja, sem os detalhes corretos ficamos em suposição, por isto que na postagem citei que era básica devido aos detalhes "Para simplesmente copiar "as colunas C, I, M, O, R, T, V" percorrendo cada código na coluna A e colar nas respectivas abas"

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/02/2018 6:31 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Olá mauro, peço desculpas se não me expressei bem. Eu preenchi o 108 para que vocês vejam mais ou menos como ficaria. Não é pra copiar a linha inteira não. Você está correto são apenas dados das colunas C, I, M, O, R, T, V essas informações precisam ser copiadas e coladas de acordo com a linha pra cada aba distinta e ele só vai copiar se tiver dados, se nao tiver dados ele não fará nada, por isso que no exemplo só tem 4 informações. com o código que você me deu eu preenchi as respectivas colunas da linha 100, 101, 102 de consolidados sendo que quando aperto o botao eles somem da aba consolidados e quando olho a aba 100, 101, 102 não está lá as informações. E seria interessante ele não apagar nada da consolidados e levar as informações. Depois quando virar o mês ai eu aperto o botão de apagar os dados que vai limpar todas as referidas colunas de consolidados e as informações outrora copiadas da macro que você fez continuarão nas abas (100,101,102) para a inserção de novas pontuações no mês seguinte.

 
Postado : 06/02/2018 8:22 am
Página 1 / 2