Notifications
Clear all

Gerador de códigos

12 Posts
6 Usuários
0 Reactions
2,541 Visualizações
(@alanthiso)
Posts: 5
Active Member
Topic starter
 

Bom dia caros colegas do fórum!

Estou precisando de uma ajuda para criar um gerador de códigos um pouco mais complexo:

Tenho um sistema de chegada de produtos que deve gerar códigos para os produtos respeitando a seguinte ordem:

NN (Número de chegada)
MM (Mês de chegada)
AA (Ano de chegada)

Ou seja: 011116 (chegada número 01 de novembro de 2016)

Hoje faço manualmente e tenho que ficar lembrando ou salvando qual foi a última chegada, alguém poderia me ajudar a desenvolver um macro ou fórmula que gere esse código automaticamente?

Desde já agradeço.

 
Postado : 29/11/2016 6:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde

Seja bem-vindo ao fórum!

Desmembrado do tópico:
viewtopic.php?f=10&t=3278

Favor sempre criar um novo tópicos para as tuas dúvidas, não aproveite tópicos dos outros.

Fica mais fácil do pessoal ajudar se anexar uma planilha de exemplo, demonstrando o que deseja.

Para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

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

 
Postado : 01/12/2016 10:05 am
(@mprudencio)
Posts: 2749
Famed Member
 

Duas perguntas

No caso do mes de Novembro so altera o primeiro criterio?

E no momento em que mudar o mes o que acontece continua a contagem ou reinicia?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 01/12/2016 10:13 am
Basole
(@basole)
Posts: 487
Reputable Member
 

Veja se ajuda:

Com formulas:

=TEXTO(HOJE();"dd")&TEXTO(HOJE();"mm")&TEXTO(HOJE();"aa")

Com vba:

Sub Gerar_Codigo()

ActiveCell = Application.WorksheetFunction.Text(VBA.Date, "dd") & _
Application.WorksheetFunction.Text(VBA.Date, "mm") & _
Application.WorksheetFunction.Text(VBA.Date, "yy")
ActiveCell.NumberFormat = "000000"

End Sub

Click em se a resposta foi util!

 
Postado : 01/12/2016 10:50 am
(@alanthiso)
Posts: 5
Active Member
Topic starter
 

Boa tarde, MPrudencio

Duas perguntas

No caso do mes de Novembro so altera o primeiro criterio? (Exatamente, cada mês entra no código com seu respectivo número, por exemplo: Setembro 09...)

E no momento em que mudar o mes o que acontece continua a contagem ou reinicia? (Ao mudar o mês, a contagem reinicia sim, pois preciso contar as chegadas de cada mês)

Obrigado;

 
Postado : 05/12/2016 10:32 am
(@alanthiso)
Posts: 5
Active Member
Topic starter
 

Basole, boa tarde;

Ajuda de certa forma, porém no primeiro campo, eu preciso inserir uma contagem automática por linha, não o dia,
por exemplo:

No mês de Dezembro 2016

Número sequencial/mm/aa

Independente do dia, pois preciso controlar a chegada por ordem numérica sequencial.

E a cada mês essa contagem se reinicia;

Obrigado;

 
Postado : 05/12/2016 10:40 am
(@amazonasmc)
Posts: 16
Active Member
 

ver se te serve

 
Postado : 05/12/2016 12:48 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

alanthiso, agora que entendi que voce quer numeraçao automatica nos 2 1º digitos:
Fiz as alteraçoes, a macro verifica o respectivo mes, e guarda coluna xfc e cria uma nova numeraçao (xfd), a cada reinicio do mes.

Sub Gerar_Codigo_2()
Dim UL As Long

With ActiveSheet

UL = .Cells(Rows.Count, 1).End(xlUp).Row

If .[xfc1] = VBA.MonthName(VBA.Month(VBA.Date)) Then
.[xfD1] = .[xfD1] + 1
Else
.[xfc1] = VBA.MonthName(VBA.Month(VBA.Date))
.[xfD1] = 1
End If

.Range("A" & UL).Value = Application.WorksheetFunction.Text(.[xfD1], "00") & _
Application.WorksheetFunction.Text(VBA.Date, "mm") & _
Application.WorksheetFunction.Text(VBA.Date, "yy")

.Range("A" & UL).NumberFormat = "000000"

End With
End Sub

Click em se a resposta foi util!

 
Postado : 05/12/2016 2:29 pm
(@edivan)
Posts: 119
Estimable Member
 

Olá, tente essa macro:

Sub SubGerar_Codigo()
    
    Dim Cod As String
    'Aqui criei uma célula auxiliar para armazenar
    'a posição atual da chegada do produto
    With Sheets("Plan1")
        
        .Range("A1").Value = .Range("A1").Value + 1
            
        Cod = Format(.Range("A1").Value, "00") & Format(Date, "mm") & Format(Date, "YYYY")
        
    End With
    
    MsgBox Cod
    
End Sub

Execute em uma nova pasta de trabalho para teste se funcionar você faz as adaptações...

OU SE PREFERIR BAIXE MEU EXEMPLO....

visite meu canal no youtube: https://www.youtube.com/channel/UCbIAUS ... 2B5SGFDJgg

Visite meu blog: https://www.programacaopassoapasso.wordpress.com

 
Postado : 06/12/2016 4:35 am
(@alanthiso)
Posts: 5
Active Member
Topic starter
 

Gostaria de agradecer a todos que se dispuseram a ajudar!

Basole, obrigado, ficou muito claro sua ajuda;
Edivan, também me ajudou muito!

Ainda estou com o problema para incluir o gerador de código na planilha em anexo;

Se puderem me ajudar.

Obrigado;

 
Postado : 12/12/2016 11:18 am
Basole
(@basole)
Posts: 487
Reputable Member
 

@ alanthiso
Sua planilha contém 4 abas = 1 userform, e nenhuma explicação.

Fica dificil adivinhar (???), onde quer que o codigo gerado, seja inserido.

Obrigado

Click em se a resposta foi util!

 
Postado : 12/12/2016 12:46 pm
(@alanthiso)
Posts: 5
Active Member
Topic starter
 

Desculpe é porque ainda está em construção!
Preciso que o código gerado seja inserido na aba "Colunas" em "Código"

Quando a pessoa clicar no formulário para inserir uma nova coluna esse código seja gerado automaticamente na tela do formulário, sem a possibilidade de alteração, quando salvar, o código vai para a aba "Colunas" em código e a cada nova inserção o código vai seguindo a sequência, conforme já salvo na aba colunas.
Respeitando o critério que a cada mês e ano ele inicia a contagem novamente.

Obrigado pela ajuda Basole!

 
Postado : 13/12/2016 7:46 am