Nessa e nas próximas duas lições, veremos o uso do VBA para solucionar um exemplo prático. Vamos criar uma função personalizada, chamada ValidaCPF. Em seguida usaremos essa função para fazer o cálculo do DV de um conjunto de CPFs:
Importante: O algoritmo de cálculo do DV de CPFs e CNPJs é de domínio público, já tendo sido publicado no diário oficial da união e em diversas revistas de informática, de circulação nacional.
Nessa lição explicarei como funciona o cálculo do DV do CPF.
Como calcular o DV do CPF
Para entender o algoritmo de cálculo do CPF vamos utilizar um exemplo prático.
Considere o seguinte CPF (sem o DV): 333.444.555
Posição
1
2
3
4
5
6
7
8
9
Número
3
3
3
4
4
4
5
5
5
Começamos a multiplicar os dígitos do CPF, a partir da posição 9, ou seja, de trás para frente, por 2, 3, 4, 5 e assim por diante, conforme indicado na tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
Número
3
3
3
4
4
4
5
5
5
Multiplica por:
10
9
8
7
6
5
4
3
2
Resultado
30
27
24
28
24
20
20
15
10
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma1 = 30+27+24+28+24+20+20+15+10
Soma1 = 198
Faço a divisão desta soma por 11 e determino o resto da divisão:
198/11 Resulta em uma divisão exata, com resto 0
Regra: Quando o resto é zero ou um, o DV é 0.
Quando o resto é diferente de zero ou um, o DV é
obtido fazendo-se: 11-resto
Neste caso como o resto foi zero, o primeiro DV é zero:
DV1=0
O DV1 calculado passa a fazer parte do CPF, conforme indicado pela tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
Número
3
3
3
4
4
4
5
5
5
0
Agora repetimos o processo anterior, porém já considerando o DV1 como parte integrante do CPF, conforme indicado pela tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
Número
3
3
3
4
4
4
5
5
5
0
Multiplica por:
11
10
9
8
7
6
5
4
3
2
Resultado
33
30
27
32
28
24
25
20
15
0
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma2 = 33+30+27+32+28+24+25+20+15+0
Soma1 = 234
Faço a divisão desta soma por 11 e determino o resto da divisão:
234/11 Resulta em (21), com resto 3
Regra: Quando o resto é zero ou um , o DV é 0.
Quando o resto é diferente de zero ou um, o DV é
obtido fazendo-se: 11-resto
Neste caso como o resto foi 3, o segundo DV é :
DV2 = 11 - 3
DV2 = 8
Com isso o CPF, já com os dois DVs fica conforme indicado na tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
11
Número
3
3
3
4
4
4
5
5
5
0
8
Ou seja: 333.444.555-08
Os algoritmos para cálculo dos DVs do CNPJ são praticamente iguais. A única diferença é a quantidade de dígitos do CNPJ é diferente do CPF.
quinta-feira, 14 de agosto de 2008
DV do CPF(cadastro de pessoa física)
Algoritmo:
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário