Continuando o artigo anterior sobre Validação de CPF, CNPJ e Título de Eleitor, abordarei hoje como verificar a validade de um número de um Título de eleitor. Para quem não leu a primeira parte do artigo, leia aqui.
O objetivo da função que desenvolveremos é de verificar se um número de título eleitoral digitado é válido. Elaborei esta fórmula para o uso na planilha do excel de forma que execute a validação desses números. A forma de calcular já é de saber público e facilmente encontrada na internet. O que fiz foi desenvolver uma função de cálculo e análise desse algorítimo através do VBA do Excel.
Então… Mãos à obra!!!
1 – Validação de número de Título Eleitoral.
Primeiramente vamos entender como se obtém o algorítimo do DV(Dígito Verificador) de um Título Eleitoral.
O algorítimo para calcular um Título Eleitoral válido é feito de maneira similar ao do CPF e CNPJ. Primeiro conseguimos o valor para o primeiro digito verificador. Ele é obtido através do resto da divisão por 11 da soma da multiplicação de cada um dos 8 primeiros algarismos, respectivamente, por 2, 3, 4, 5, 6, 7, 8 e 9. Vejamos a ilustração.
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Título Eleitoral | 1 | 0 | 6 | 6 | 4 | 4 | 4 | 4 | 0 | 3 | 0 | 2 |
Multiplicar por | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||||
Resultado a somar | 2 + | 0 + | 24 + | 30 + | 24 + | 28 + | 32 + | 36 + | =176 |
Obtendo o resto da divisão por 11 ==> 176 / 11 = 16 resto 0.
Com isso, conseguimos o primeiro dígito verificador (0). Paraa obtenção do segundo dígito verificador, tomaremos os dois dígitos que correspondem a UF do título. Eles ficam nas posições 9 e 10. Incluiremos o primeiro DV obtido e multiplicaremos por 7, 8 e9, respectivamente. Somaremos o produto e dividiremos por 11, aproveitando apenas o resto da divisão. Veja a tabela.
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Título Eleitoral | 1 | 0 | 6 | 6 | 4 | 4 | 4 | 4 | 0 | 3 | 0 | 2 |
Multiplicar por | 7 | 8 | 9 | |||||||||
Resultado a somar | 0 + | 24 | 0 | =24 |
Obtendo o resto da divisão por 11 ==> 24 / 11 = 2 resto 2.
Agora, conseguimos o segundo dígito verificador (2). Portanto, o DV para este Título Eleitoral é 02.
Quando falei em algarismos que correspondem a UF, me referia a tabela de UFs que são válidas para as posições 9 e 10 do número do título de eleitor. Veja a tabela.
UF | Código | UF | Código |
SP | 01 | PI | 15 |
MG | 02 | RN | 16 |
RJ | 03 | AL | 17 |
RS | 04 | MT | 18 |
BA | 05 | MS | 19 |
PR | 06 | DF | 20 |
CE | 07 | SE | 21 |
PE | 08 | AM | 22 |
SC | 09 | RS | 23 |
GO | 10 | AC | 24 |
MA | 11 | AP | 25 |
PB | 12 | RR | 26 |
PA | 13 | TO | 27 |
ES | 14 | ZZ-Exterior | 28 |
Vamos transferir toda essa matemática agora para a função VBA. No código, desmembraremos o número do título em algarismos, executaremos as operações matemáticas e, por fim, efetuaremos a comparação dos DVs obtidos com o algorítimo com os DVs fornecidos no Título Eleitoral analizado.
Vá ao ambiente de desenvolvimento do VBA (Alt+F11), insira um novo módulo e digite o código abaixo.
Retorne à planilha e para chamar a função na célula, digite:
=VerificarTituloEleitor(A1)
Supondo que na célula A1 contenha um número de Título Eleitoral.
Bom! Finalizamos mais um artigo. Espero ajudar bastante seus trabalhos. Gostaria de lembrar a você que eu desenvolvo funções personalizadas por encomenda. Caso necessite de um projeto bem elaborado e funcional, solicitem um orçamento . Um abraço.
Faça o Download do Arquivo Fonte no final deste artigo.
Termos aprendidos neste artigo:
Len | Retorna um Long que contém o número de caracteres existentes em uma seqüência de caracteres ou o número de bytes necessários para armazenar uma variável. Sintaxe Len(string | varname) A sintaxe da função Len tem as seguintes partes:
|
||||||||
String | Retorna uma Variant (String) que contém uma seqüência de caracteres repetida com o comprimento especificado. Sintaxe String(number, character) A sintaxe da função String tem os seguintes argumentos nomeados:
|
||||||||
CInt | Converte uma expressão no tipo de dados Integer. Sintaxe CInt(expression) |
||||||||
Mid | Retorna uma Variant (String) que contém um número especificado de caracteres de uma seqüência de caracteres. Sintaxe Mid(string, start[, length]) A sintaxe da função Mid tem os seguintes argumentos nomeados:
|
||||||||
Mod | Operador usado para dividir dois números e retornar somente o resto. Sintaxe result = number1 Mod number2 A sintaxe do operador Mod possui as seguintes partes:
Comentários A = 19 Mod 6.7 |
Ref:Validação de número de Título Eleitoral.
como faço pra encontrar os digitos verificadores do nº do titulo eleitor 1265934718-72.tentei pelo seu metodo mas nao consigo encontrar os digito 7 e 2.
se puder me ajudar , agradeço.
Amigo,
Joguei este número de título aqui e deu certo.
Detalhe: Você está digitando com o traço? Se tiver, escreva apenas os números, ok?
Abraço!
Olá, Gostaria de saber se você sabe como posso resolver o problema abaixo:
Recebe uma planilha com informações de vendedores para fazer upload no meu portal e por isso pego estes dados e copio para outra planilha. Até ae tudo bem.
Porém, eu recebo CPF e CNPJ com pontos e traços e para a segunda planilhar se enviada preciso que estes números não tenham essa formatação.
Como posso fazer para copiar o CPF e CNPJ para a segunda planilha sem os pontos e os traços?
Fazer manualmente irá tomar muito tempo.
Olá Igor.
Supondo que o seu conteúdo de CPF/CNPJ esteja na coluna A, adicione uma nova coluna (B) para receber os valores sem pontos e traços.
Digite a fórmula abaixo na célula B1 e arraste para baixo até a última linha com valores.
=SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(A1;”-“;””);”/”;””);”.”;””)
Grande abraço.
prabens pela tecnica suer sow de bola, agora a duvida. Como posso adptar tudo isso para verificar uma textbos em uma UserForm? explicando, tenho uma Form de cadastro, quero digitar na textbox CNPJ a numeração e ele me alerte caso o seja invalido…
obrigado…
Você pode definir no método de sair do TextBox (TextBoxCNPJ_Exit) o seguinte código:
If VerificarCNPJ(TextBoxCNPJ.text) “CNPJ Válido” then
Msgbox “CNPJ Inválido. Por favor, corriga.”
End if
Abç
como faço para verificar se o numero do titulo e Valido ??
Alan,
Faça o download da planilha que disponibilizo no final deste artigo e digite o número lá.
Abç