Notifications
Clear all

Macro para controle de pontos para troca de produtos

28 Posts
3 Usuários
0 Reactions
5,112 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
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kayomaster, pelo que entendi, a rotina a ser usada seria a abaixo, e para evitar algum erro quando passar para o seu arquivo, montei um modelo baseado no que enviou, só que tirei as formulas e vinculos para testar, coloquei alguns dados para testar, veja se aeria isto, tambem estou supondo que a data que comentou é a da coluna L, se não for, é só alterar na rotina.

Faça os testes e veja se é isto;

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 sRgColunas
    Dim sRotulo
    Dim iLinRotulo
    Dim Col As String
    
    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
            sRow = x.Row

            Set sRgColunas = ShtCONSOLIDADO.Range("C" & sRow & ", I" & sRow & ",M" & sRow & ", O" & sRow & ",R" & sRow & ", T" & sRow & ",V" & sRow)
                
                For Each i In sRgColunas
                    iLinRotulo = 2 'Linha do Cabeçalho
                    
                    'Verificamos se o avlor é nulo
                    If i.Value <> "" Then
                        'Montamos a Letra das Colunas
                        Col = Split(i.Address(1, 0), "$")(0)
                        
                        'Linha dos Rotulos (Cabeçalho)
                        sRotulo = Range(Col & iLinRotulo).Address(0, 0)
                        'Capturamos o codigo
                        sCodigo = x.Value
                        sRow = i.Row
                        
                        'Montamos o nome da aba como o sCodigo
                        Set sSht = wb.Sheets(CStr(sCodigo))
                        sLinSheets = sSht.Range("A2").End(xlDown).Row + 1
                        
                        'Copiamos para as abas
                        ShtCONSOLIDADO.Range(sRotulo).Copy Destination:=sSht.Range("A" & sLinSheets)
                        ShtCONSOLIDADO.Range(i.Address).Copy Destination:=sSht.Range("B" & sLinSheets)
                        'Na instrução abaixo estou supondo que a data que comentou seria da Coluna L -DATA ENVIO
                        'Se não for, é só ajustar
                        ShtCONSOLIDADO.Range("L" & sRow).Copy Destination:=sSht.Range("C" & sLinSheets)
                     End If
                     
                 Next i
        Next

End Sub

[]s

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

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

olá, quando aperto esta aparecendo esse erro. o problema é no meu pc?

 
Postado : 06/02/2018 10:27 pm
(@klarc28)
Posts: 971
Prominent Member
 

Quando cliquei no botão copiar para abas, não deu erro.
Você fez alguma alteração no arquivo?
Em caso positivo, anexo como está agora.

 
Postado : 07/02/2018 1:43 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Baixei o arquivo que se encontra google drive e colei a rotina que postei sem alterar nada e não deu nenhum erro, alias a única coisa que vi é que a data na coluna "L" é através de uma formula, então não deveria utilizar o "Copy Destination", depois confirme se a data é desta coluna mesmo ou outra, e se for com formula acerto a rotina.
Faça o que o klarc28 comentou, veja se não tem nada diferente no arquivo que utilizou, você chegou a executar o exemplo que anexei ? Deu algum erro ?

[]s

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

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

pelo anexo que você mandou é isso mesmo, quanto a data eu vou criar depois uma nova coluna que mudarei acho que é so mudar a letra da coluna no codigo né?. Agora o problema é que quando copio e colo no meu arquivo ai ele da erro, as vezes ele manda escolher nome de arquivo aí não consigo compreender o erro. e é naquela linha do print. segue o anexo o meu arquivo.

 
Postado : 07/02/2018 8:05 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

eu peguei o seu anexo novamente e acrescentei uma linha numero 109 e coloquei pontos nas colunas, aí ele ja deu o mesmo erro. é como ele só funcionasse com as abas 100, 102, 102, 108. sendo que sao 20 abas que serão preenchidas podendo haver novos depois que irei fazendo a inclusão. segue print

 
Postado : 07/02/2018 8:15 am
(@klarc28)
Posts: 971
Prominent Member
 

................

 
Postado : 07/02/2018 8:16 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

pelo anexo que você mandou é isso mesmo, quanto a data eu vou criar depois uma nova coluna que mudarei acho que é so mudar a letra da coluna no codigo né?. Agora o problema é que quando copio e colo no meu arquivo ai ele da erro, as vezes ele manda escolher nome de arquivo aí não consigo compreender o erro. e é naquela linha do print. segue o anexo o meu arquivo.

O que posso dizer quanto a mensagem de "escolher um arquivo", isto ocorreu quando abri a primeira vez o seu arquivo devido às formulas e vinculos que ele tinha, por isto tirei as formulas no modelo que fiz, verifique as se alguma formula não está com a referencia errada.
No modelo que baixei do drive, adicionei novas abas e o respectivo código na aba CONSOLIDADO e não deu nenhum erro, verifique toda a escrita, qualquer caracter diferente pode causar erros.

[]s

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

 
Postado : 07/02/2018 8:44 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Verifique o vinculo na formula que sencontra na coluna "L" refernte a data, quando eu abro o arquivo que contem a formula, para mim aparece assim :
"=SE(P4="NADA CONSTA";"-";'C:Meus DocumentosGoogle DriveAltechPLANILHAS 2017Mês atual[Mês atual.xlsm]100'!P1)", e como eu não tenho este diretorio e arquivo é aberto a caixa para eu selecionar.
Faça um outro teste antes desabilitando esta linha na rotina :

ShtCONSOLIDADO.Range("L" & sRow).Copy Destination:=sSht.Range("C" & sLinSheets)

[]s

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

 
Postado : 07/02/2018 8:54 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

olá eu criei uma coluna Z pra botar a data e fiz a mudança no código porem continua dando erro. segue anexo prints e a planilha. Eu fiz inserção dos codigos e da nova coluna no arquivo original e o erro do print apareceu. acho que é algo da coluna A. pode ver no link que acrescentei.

 
Postado : 07/02/2018 10:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kayo, agora identifiquei o erro.

O que acontece é o seguinte, você criou novas abas sem nenhuma informação, com o layout em branco, então na instrução :

sLinSheets = sSht.Range("A2").End(xlDown).Row + 1

onde capturamos a última linha preenchida, ela captura a ultima linha da aba (A1048576) e soma mais 1 o que gera o erro de estouro, e falha no range que não existe.

Das duas uma, ou você cria as abas conforme o layout das outras, ou temos de criar tratamento na rotina para abas em branco, mas se criar as abas todas iguais conforme o layout da "100" não é mais para ter erros.

[]s

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

 
Postado : 07/02/2018 11:47 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

A ta. vou colocar as informacoes e fazer o teste

 
Postado : 07/02/2018 11:56 am
(@kayomaster)
Posts: 90
Trusted Member
Topic starter
 

Ajeitei aqui e deu certíssimo, muito obrigado! era isso mesmo que eu precisava, me desculpe pelo estresse caso eu tenha lhe causado, ficou ótimo. parabéns e obrigado pela sua inteligência, dedicação e paciência. :D

 
Postado : 07/02/2018 12:22 pm
Página 2 / 2