MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Validação de CPF e CNPJ com os pontos e traço

    Connekta Informatica
    Connekta Informatica
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1064
    Registrado : 01/07/2011

    [Resolvido]Validação de CPF e CNPJ com os pontos e traço Empty [Resolvido]Validação de CPF e CNPJ com os pontos e traço

    Mensagem  Connekta Informatica 19/4/2021, 12:23

    Bom dia

    Tem uma cadastro de clientes onde tenho: Tipo = "Física" e "Jurídica" e o campo: "Documento1" = CPF e CNPJ.

    Usando os seguintes código:
    Código:

    '******************************************
    'Rotinas para cálculo de dígito verificador
    'e validação de CNPJ e CPF
    'Autor: Luiz Cláudio C. V. Rocha
    '******************************************

    Public Function fDigCNPJ(CNPJ As String) As String
    'Calcula os dígitos verificadores do CNPJ
    Dim i As Integer
    Dim intFator As Integer
    Dim intTotal As Integer
    Dim intResto

    'Verifica se tem 12 ou 14 dígitos
    If Not (Len(CNPJ) = 12 Or Len(CNPJ) = 14) Then
    Exit Function
    Else
    'Verifica se é numérico
    If Not IsNumeric(CNPJ) Then
    Exit Function
    Else
    'Trunca o CNPJ em 12 caracteres
    CNPJ = Left$(CNPJ, 12)
    End If
    End If

    Inicio:
    'Percorre as colunas (de trás para frente),
    'multiplicando por seus respectivos fatores
    intFator = 2
    intTotal = 0
    For i = Len(CNPJ) To 1 Step -1
    If intFator > 9 Then intFator = 2
    intTotal = intTotal + ((CInt(Mid(CNPJ, i, 1)) * intFator))
    intFator = intFator + 1
    Next i

    'Obtém o resto da divisão por 11
    i = intTotal Mod 11
    'Subtrai 11 do resto
    i = 11 - i
    'O dígito verificador é i
    If i = 10 Or i = 11 Then i = 0
    'Concatena ao CNPJ
    CNPJ = CNPJ & CStr(i)

    If Len(CNPJ) = 13 Then
    'Calcula o segundo dígito
    GoTo Inicio
    End If

    'Retorna os dígitos verificadores
    fDigCNPJ = Right$(CNPJ, 2)
    End Function

    Public Function fDigCPF(CPF As String) As String
    'Calcula os dígitos verificadores do CPF
    Dim i As Integer
    Dim intFator As Integer
    Dim intTotal As Integer
    Dim intResto

    'Verifica se tem 9 ou 11 dígitos
    If Not (Len(CPF) = 9 Or Len(CPF) = 11) Then
    Exit Function
    Else
    'Verifica se é numérico
    If Not IsNumeric(CPF) Then
    Exit Function
    Else
    'Trunca o CPF em 9 caracteres
    CPF = Left$(CPF, 9)
    End If
    End If

    Inicio:
    'Percorre as colunas (de trás para frente),
    'multiplicando por seus respectivos fatores
    intFator = 2
    intTotal = 0
    For i = Len(CPF) To 1 Step -1
    intTotal = intTotal + ((CInt(Mid(CPF, i, 1)) * intFator))
    intFator = intFator + 1
    Next i

    'Obtém o resto da divisão por 11
    i = intTotal Mod 11
    'Subtrai 11 do resto
    i = 11 - i
    'O dígito verificador é i
    If i = 10 Or i = 11 Then i = 0
    'Concatena ao CPF
    CPF = CPF & CStr(i)

    If Len(CPF) = 10 Then
    'Calcula o segundo dígito
    GoTo Inicio
    End If

    'Retorna os dígitos verificadores
    fDigCPF = Right$(CPF, 2)
    End Function

    Public Function fCNPJ(CNPJ As String) As Boolean
    'Verifica se o CNPJ é válido
    Dim strChar As String

    'Verifica se tem 14 caracteres
    If Not Len(CNPJ) = 14 Then
    fCNPJ = False
    Exit Function
    End If

    'Verifica se o dígito verificador confere
    strChar = Mid$(CNPJ, 13, 2)
    If fDigCNPJ(CNPJ) = strChar Then
    fCNPJ = True
    Else
    fCNPJ = False
    End If
    End Function

    Public Function fCPF(CPF As String) As Boolean
    'Verifica se o CPF é válido
    Dim strChar As String

    'Verifica se tem 11 caracteres
    If Not Len(CPF) = 11 Then
    fCPF = False
    Exit Function
    End If

    'Verifica se o dígito verificador confere
    strChar = Mid$(CPF, 10, 2)
    If fDigCPF(CPF) = strChar Then
    fCPF = True
    Else
    fCPF = False
    End If
    End Function


    Código:

    If Me.TipoPessoa = "FÍSICA" Then
        If fCPF(Me!Documento1) = False Then
            MsgBox "CPF digitado é inválido. Verifique!", vbInformation, "Aviso"
            Cancel = True
        End If
        ElseIf Me.TipoPessoa = "JURÍDICA" Then
        If fCNPJ(Me!Documento1) = False Then
            MsgBox "CNPJ digitado é inválido. Verifique!", vbInformation, "Aviso"
            Cancel = True
        End If
    Else
        Exit Sub
    End If

    O problema é o seguinte, quando eu digito CNPJ: 00342562000198 ou CPF: 03899878452 funciona perfeitamente, mas, quando eu digito 00.342.562/0001-98 ou CPF: 038.998.784-52 não funciona fala CPF ou CNPJ invalido e eles estaão corretos.

    Como eu faço para validar o CPF e CNPJ com os pontos e traço?


    .................................................................................




    Untitled Document





    Connekta Informática Apoia:


    Chapada dos Veadeiros - Alto Paraíso de Goiás
    Venha conhecer as belezas naturais desta cidade.


    Clique Aqui


    Lembrete: Desfrutar e Preservar é um direito de Todos.




    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1446
    Registrado : 13/12/2016

    [Resolvido]Validação de CPF e CNPJ com os pontos e traço Empty Re: [Resolvido]Validação de CPF e CNPJ com os pontos e traço

    Mensagem  Alexandre Fim 19/4/2021, 13:26

    Connekta bom dia,

    Copie e cole em algum módulo a função abaixo:

    Código:


    Public Function fnRemoveMask(ByVal nCampo As Variant) As String
    Dim carac1          As String
    Dim carac2          As String
    Dim X              As Integer
       
        If IsNull(nCampo) Or Trim(nCampo) = "" Then
            fnRemoveMask = ""
            Exit Function
        End If
       
       
        carac1 = "./-'() "
        For X = 1 To Len(carac1)
            carac2 = Mid(carac1, X, 1)
            nCampo = Replace(nCampo, carac2, "")
        Next X
     
      fnRemoveMask = nCampo

    End Function



    E substitua as linhas:
    If fCPF(Me!Documento1) = False Then

    Por esta:

    If fCPF(fnRemoveMask(Me!Documento1)) = False Then


    Boa sorte

    []'s

    FIM



    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.

    Connekta Informatica gosta desta mensagem

    Connekta Informatica
    Connekta Informatica
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1064
    Registrado : 01/07/2011

    [Resolvido]Validação de CPF e CNPJ com os pontos e traço Empty Re: [Resolvido]Validação de CPF e CNPJ com os pontos e traço

    Mensagem  Connekta Informatica 19/4/2021, 15:23

    Muito obrigado!!!


    .................................................................................




    Untitled Document





    Connekta Informática Apoia:


    Chapada dos Veadeiros - Alto Paraíso de Goiás
    Venha conhecer as belezas naturais desta cidade.


    Clique Aqui


    Lembrete: Desfrutar e Preservar é um direito de Todos.




    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1446
    Registrado : 13/12/2016

    [Resolvido]Validação de CPF e CNPJ com os pontos e traço Empty Re: [Resolvido]Validação de CPF e CNPJ com os pontos e traço

    Mensagem  Alexandre Fim 19/4/2021, 15:24

    Valeu Connekta..
    O fórum agradece.
    boa sorte


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.

      Data/hora atual: 13/6/2021, 00:30