Guru do Excel + Power BI

Sua dose diária de Power BI e Excel

Se você tem uma planilha, suplemento ou afins que gostaria de compartilhar com os colegas, esse é o lugar.
  • Avatar do usuário
  • Avatar do usuário
#13376
Boa tarde a todos.

Este é meu primeiro Modelo postado aqui no fórum. Espero que gostem do resultado.

A alguns meses, venho aprendendo a trabalhar com a criação de Objetos, através do Módulo de Classe, localizado no Visual Basic Editor. Para meu aprendizado, desenvolvi uma classe que realiza Validação do Dígito Verificador de documentos brasileiros, como:
- Cadastro Nacional de Pessoa Jurídica (CNPJ);
- Cadastro de Pessoa Física (CPF);
- Título de Eleitor (TE);
- Documento Fiscal Eletrônico (DFe).
Ps.1: Quero ressaltar que os códigos para a realização dos cálculos, foram baseados em modelos de outros sites da web. Dentro da Classe ValidadeDocument, estão localizados todas as referências dos autores que desenvolveram os códigos originais.

Além da função de Validação do Dígito Verificador, o Objeto criado também altera a formatação dos documentos, adicionando/removendo os caracteres especiais existentes na formatação dos documentos.

A proposta do modelo em anexo é demonstrar essas funcionalidades de duas formas diferentes:
- A 1ª forma é através de Userform, onde pode ser utilizada para validar documentos em um cadastro de clientes, por exemplo;
- A 2ª forma é através da Criação de Funções(Function) como Fórmulas do Excel.
ModClasse para Validar Documentos.xlsm
Gostaria muito que o projeto fosse não apenas baixado e utilizado/adaptado pelos usuários, mas sim avaliado de forma um pouco criteriosa, principalmente pelos usuários que entendam um pouco sobre Programação Orientada a Objeto no VB6/VBA. Através de sugestões, quero melhorara estrutura de desenvolvimento deste formato.

Ps.2: Este modelo também se encontra no fórum do Tomás Vásquez.
Espero que todos gostem e conto com a colaboração de todos nesta avaliação.

Abraço a todos e excelente semana.
#13381
Olá Mikel, fiz um pequeno teste nas suas funções e foi tudo Ok, mas me pergunto se não seria interessante forçar a identificação do número como CPF, pois ele tem apenas um dígito a menos q o Título de Eleitor e um erro de digitação poderia fazer com q a validação checasse o número de forma errada.

Na minha concepção as funções poderiam ficar da seguinte forma:
=DOCVALIDATE(B20;DFE)
=DOCVALIDATE(B20;CNPJ)
=DOCVALIDATE(B20;CPF)
=DOCVALIDATE(B20;TE)
#13391
DJunqueira, boa noite.

Inicialmente essa seria minha intenção, porém eu queria reaproveitar o Tipo de Variável Enumerada existente na Classe ValidateDocument, sem ter que criar outra Enumeração no Módulo ou Formulário. Quando tentei gerar um parâmetro das funções usando esse tipo de dado Enumerado da Classe, foi gerado um erro na execução.

Esse é um modelo inicial para compreender melhor a utilização do recurso de Criação de Objeto com Módulo de Classe, pois existem recursos como Implementações (Implement) e Criação de Eventos (Event, RaiseEvent e WithEvents), que eu sei da existência mas ainda não compreendi as possibilidades de uso.

Outro ponto existente é eliminar as Funções Privadas de Formatação e Validação, criando uma única função para identificação e execução, de acordo como documento informado. Mas não quero realizar isso e fazer com qua a mesma se torne um procedimento gigantesco e sem muito sentido. Tento trabalhar sempre com Scripts mais enxutos. Mas sobre isso, gostaria da opinião dos demais usuários.

Tenho feito muitas buscas de materiais que falam sobre o desenvolvimento VB6/VBA com Módulo de Classes e tentando entender todos os recursos.

Mas gostei muito da sua opinião. Isso mostra que meu plano inicial não estava errado e que realmente preciso arrumar uma forma de corrigir essa falha.

Muito obrigado pelo teu retorno e vou atualizando aqui, conforme evolução do mesmo. Além disso, fico no aguardo de novas análises.

Abraços!!!
#34614
Caros Colegas!
Prazer, me chamo Rafael!!!

Pelo meu pouco conhecimento em Excel, humildemente peço a gentileza de me ajudarem com um detalhe na validação do título de eleitor via VBA.
Conheço VBA a ponto de fazer programação? Não! rs - Eu já fiz programação em Delphi há... deixa os anos para lá neh? rsss... Mas enfim, em uma planilha que estou usando para empresa, preciso da validação do título de eleitor. Ache um "comando", "linha de programação" (desculpe a ignorância, mas não sei qual o nome correto que se dá para a programação do módulo), que faz o serviço, porém me deparei com um número de título (já consultei no TSE) e ele é verdadeiro, mas a planilha acusa como falso.
Será que vocês poderiam me auxiliar nesse caso? Posso postar o código do comando aqui para mostrar ou como faço?
O número do título que estou tentando validar é 137276160281
Você não está autorizado a ver ou baixar esse anexo.
#34752
Rafael, boa noite.

Cara, estive dando uma olhada no número que me enviou e realmente os valores não batem.

Cheguei a fazer o cálculo na mão, para confirmar se o calculo no sistema estava ou não com problema. Nos meus cálculos/testes, o dígito verificador na não chega em 81, mas apenas em 80.

Sobre a validação no site do TSE, também vi que o Título existe, só não esta sendo validado.

Vou dar uma procurada e me atualizar, para saber se não houve alguma mudança na forma do cálculo.

Estarei olhando e, assim que tenha uma resposta, posto aqui novamente.

Abraços e obrigado pelo feedback

Tranquilo, osvaldomp. Me ajudou bastante.... muit[…]

Consegue enviar se pbix? Pode sar com dados fictic[…]

CONTAR ATIVO

Bom dia, Osvaldomp. Funcionou perfeitamente. Muit[…]

Se possível, coloca uma planilha de exemplo[…]

Agora sim funcionou com a fórmula do @Este[…]

Excelente, osvaldomp. Muito obrigado!

Boa tarde. Envio uma outra opção. At[…]