Como criar código de formatos numéricos?

Tentei criar um formato númerico no calc, para numeração única de processos judiciais, com o seguinte padrão de formato: NNNNNNN-DD.AAAA.J.TR.OOOO
.
Onde:

NNNNNNN - processo
DD - dígito verificador
AAAA - ano
J - órgão
TR - Tribunal
OOOO - fórum

.
Objetivo: inserir o número de um processo judicial, em célula única, digitando apenas números, devendo, portanto, ficar no seguinte formato: 0021506-32.2001.8.19.0068.
.
Fiz testes com alguns formatos (veja abaixo), que não atingiram o objetivo, utilizando a página de ajuda como guia.

  1. 0000000"-“00”.“0000”.“0”.“00”."0000
  2. 0000000"-“00”.“0000”.“0”.“00”."0000; @
  3. 0000000"-“00”.“0000”.“0”.“00”."0###
  4. 0000000"-“00”.“0000”.“0”.“00”."0###; @
  5. 0######"-“00”.“0000”.“0”.“00”."0###; @
  6. *0#####"-“00”.“0000”.“0”.“00”."0###; @
  7. *0#"-“00”.“0000”.“0”.“00”."*0###; @
  8. *0#"-“00”.“0000”.“0”.“00”."*0#; @
  9. *0#"-“00”.";AAAA;".“0”.“00”."*0#; @
  10. 0000000"-“00”."####".“0”.“00”."####; @
  11. *0#"-“00”."####".“0”.“00”."####
  12. *0#"-“00”."####".“0”.“00”."00##
  13. 00#####"-“00”."####".“0”.“00”."0###
  14. 00#####"-“0#”."####".“0”.“0#”."0###
  15. 0######"-“0#”."####".“0”.“0#”."0### (formato mais próximo)
  16. *0######"-“0#”."####".“0”.“0#”."0###
  17. 0######"-“0#”."####".“0”."0#.0###
  18. [>0]0######"-“0#”."####".“0”."0#.0###

Porém, não obtive êxito
.
---------------Observações 1---------------
.
Ao criar os formatos, os últimos 4 dígitos são preenchidos apenas com zero, em vez da numeração digitada, ou é preenchido com 1 (um) zero a mais no início.
.
Com base no que li na página de ajuda, se entendi bem, o problema estaria na leitura dos caracteres (dígitos) à direita do delimitador usado “.” (ponto).
.
Reforço que a ideia é digitar o número, sem uso de fórmula.
.
Tive algumas sugestões do @schiavinatto com uso de macros:

Sub DigitarProcesso()
' Ligar a Eventos de planilha... , Clique duplo.
   Dim sPro$, Parte1$, Parte2$, Parte3$, Parte4$, Parte5$, Parte6$

sPro = InputBox ("O número do Processo ( 20 dígitos, somente números )", "D I G I T E", "12345678901234567890")

    Parte1 = Left(sPro, 7)
    Parte2 = Left(sPro, 9) : Parte2 = Right(Parte2, 2)
    Parte3 = Left(sPro, 13) : Parte3 = Right(Parte3, 4)
    Parte4 = Left(sPro, 14) : Parte4 = Right(Parte4, 1)
    Parte5 = Left(sPro, 16) : Parte5 = Right(Parte5, 2)
    Parte6 = Right(sPro, 4) 

sNProc = Parte1 + "-" + Parte2  + "." + Parte3  + "." + Parte4  + "." + Parte5 + "." + Parte6
  ThisComponent.getCurrentSelection().String = sNProc
End Sub

Mesmo assim, gostaria de não ter que fazer uso da macro para inserção dos dados. No final, encontrei possível solução com uso de Campo de Padrão (não há informações relevantes nas páginas de ajuda).
.
---------------Observações 2---------------
.
Por não existir muita informação referente ao campo de padrão, na página de qualidade da The Document Foundation (categoria português), criei o tópico: Adição de página em documentação online - campo de padrão
.
---------------ARQUIVO EXEMPLO---------------
Solução temporária com campo de padrão: RI_calcula-distribuicao.ods - Google Drive

2 Likes

Número de 20 dígitos? O límite é 16, por isso:

Se o ano não varia muito, você pode colocalo no código com antelação (2001 no exemplo):
0000000"-"0#".2001."0"."0#"."0###
0000000"-"00".2001."0"."00"."0000

imagen

1 Like

Olá, @LeroyG !
.
Sabe informar se o limite de caracteres do tipo numérico pode ser alterado em alguma configuração interna, talvez?
.
Curiosidade apenas.
.
Apesar da ideia de manter fixa uma parte da numeração seja boa, infelizmente não atende. A parte do ano varia bastante também.

https://wiki.documentfoundation.org/Faq/Calc/Accuracy

Na categoría English, tem varias perguntas sobre o tema.

Tem alguma parte que não varia? O 00 do inicio, o 20 de 2001? Se tiver cuatro, é suficiente.

1 Like

Hi, the problem with custom formats is in the possible comparisons, if in other cells you have 0021506-32.2001.8.19.0068 this will be different from 215063220018190068, as with the formatting what we see does not correspond to the real code present on the cell.
So you have to be careful

Obrigado pelas indicações @LeroyG !
.
Ficou esclarecido.
.

.
Irei fazer uso da macro disponibilizada pelo @gaetanopr por hora, e irei acompanhar o uso da planilha pelos usuários, para ver se existe alguma numeração que seja pouco variável.

Hi, it’s better for me to answer in English.
if it’s ok with you, I’ve inserted a macro that is activated by modifying cell E23, it checks the length of the numeric code, if it’s 20 it’s modified with the specific format, if it’s 25 it allows manual modification, if it’s different from 20 and 25 sends error message.
codice_format.ods (8.7 KB)

Pattern fields are more suitable for inserting numbers and letters in a precise order, for example for tax codes, in your case they are all numbers, If in any case you want to use pattern fields it’s not difficult to let them know

PS:Version with pattern field, the numerical value is written on the cell where the pattern field is anchored, the macro starts when the focal point is lost.
pattern_field.ods (11.9 KB)

1 Like

Sem problema para mim. Entendi perfeitamente a solução e gostei.
.
Minha preocupação com a macro vinculada a evento da planilha (e por isso não desejava macro), era referente a possível lentidão ou travamento que poderia causar quando um usuário qualquer utilizasse, devido a natureza de Recálculo automático.
.
Contudo, a condicional aplicada talvez ajude a evitar isso.
.
Agradeço a solução.