As melhores planilhas prontas e gratuitas.

As melhores planilhas prontas e gratuitas.

Cadastro cliente em Excel VBA

Cadastro cliente Excel VBA use este modelo de cadastro para controlar todos os seus clientes onde permite cadastrar os campos abaixo:

Nome, endereço, número, bairro, cidade, estado, cep, ddd, telefone, celular, rg, cpf, email, data cadastro e observação.

Após feito o cadastro podemos consultar os clientes já cadastrado por id ou nome e imprimir os clientes já cadastrado.

Cadastro cliente em Excel VBA

Agora vamos aos passos como funciona.

1- Para cadastrar um cliente novo clique no botão novo.

2- Quando lançar o CEP ele já adiciona o endereço automaticamente.

3 – Após lançado todos os dados do cliente, clique no botão cadastrar.

4- O botão limpar serve para limpar os campos dos formulários caso tenha iniciado um cadastro e resolveu não cadastrar mais.

5- Para consultar todos os cadastros clique no botão consulta e podemos filtrar por id e nome.

6- Com a consulta aberta podemos editar um cliente já cadastrado.

7- O botão excluir temos a opção para excluir um cliente já cadastrado.

8- Temos disponível o botão imprimir para imprimir todos os clientes cadastrado.

Para os usuários mais avançado planilha desbloqueada para alteração e fonte liberado.

Já temos um bom tempo de programação em Excel VBA e quando chegamos em um código fonte bem preparado e com ótima lógica de programação é muito bom compartilhar o conhecimento e veja cada detalhe do fonte que usamos neste cadastro de cliente.

Agora para você que é usuário do Excel VBA e quer aproveitar este cadastro para estudar ou utilizar as fontes segue abaixo algumas instruções interessante.

Cadastro cliente em Excel VBA dicas dos comandos utilizado.

Dicas do Excel VBA 01 – Colocamos no cadastro do cliente o CEP já com o endereço automático facilitando a vida do usuário.

Para isso usamos o site https://viacep.com.br para acessar o CEP automático.

Criamos a função ConsultaCEP conforme abaixo:

Function ConsultaCEP(valorcep As String, tipoCampo As String)
Dim oXmlDoc As DOMDocument
Dim oXmlNode As IXMLDOMNode
Dim oXmlNodes As IXMLDOMNodeList
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“https://viacep.com.br/ws/” + valorcep + “/xml/”)
Set oXmlNodes = oXmlDoc.SelectNodes(“/xmlcep/” + tipoCampo)
For Each oXmlNode In oXmlNodes
ConsultaCEP = oXmlNode.Text
Next
End Function

Cadastro cliente em Excel VBA

Para utilizar as referências XML no ambiente VBA precisa habilitar em “Ferramentas – Referencias” Microsoft XML, v3.0.

Cadastro cliente em Excel VBA

No botão correios precisamos colocar a função abaixo para apontar os txtlabel envolvidos como o endereço, bairro, cidade e estado.

Sintaxe utilizada no botão correio:

Private Sub ECorreios_Click()
txt_endereço = UCase(ConsultaCEP(txt_cep, “logradouro”))
txt_bairro = UCase(ConsultaCEP(txt_cep, “bairro”))
cmb_cidade = UCase(ConsultaCEP(txt_cep, “localidade”))
cmb_uf = UCase(ConsultaCEP(txt_cep, “uf”))
txt_numero.SetFocus
End Sub

No campo CEP utilizamos no evento KeyPress a formatação para preenchimento correto do CEP.

Sintaxe abaixo utilizada:

Private Sub txt_cep_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
txt_cep.MaxLength = 9
Select Case KeyAscii
Case 8, 48 To 57
If Len(txt_cep) = 5 Then
txt_cep.Text = txt_cep.Text & “-“
End If
Case Else
KeyAscii = 0
End Select
End Sub

Dicas do Excel VBA 02 – Botão imprimir

Foi criado uma função para imprimir os clientes cadastrado.

Função criada:

Sub Relatório_imprimir()
Application.ScreenUpdating = False
On Error Resume Next
Dim SvInput As String
Dim data As String
Dim var_MENSAGEM
Dim nome As String
data = VBA.Format(VBA.Date, “dd-mm-yyyy”)
SvInput = ThisWorkbook.Path & Application.PathSeparator & nome & “” & data & “.pdf”
With ActiveSheet
.ExportAsFixedFormat _
Type:=x1TypePDF, _
Filename:=SvInput, _
OpenAfterPublish:=True
End With
Application.ScreenUpdating = True
End Sub

E no botão imprimir usamos a função abaixo:

Sheets(“DADOS CLIENTES”).Select
Call Relatório_imprimir

Dicas do Excel VBA 03 – A consulta fica oculta no formulário do cadastro cliente.

A otimização de tela na hora da programação é muito importante principalmente quando temos vários componentes no formulário.

Para isso ao abrir o cadastro ocultamos o ListaBox com a função abaixo no evento inicialize.

Private Sub UserForm_Initialize()
lst_busca.Visible = False
Label18.Visible = False
Frame4.Visible = False
End Sub

Segue as demais fontes dos botões:

Botão Fechar:

A função Unload Me fecha o formulário e após fechar estamos direcionando para a planilha prlncipal “Sheets(“PRINCIPAL”).Select”.

Unload Me
Sheets(“PRINCIPAL”).Select

Botão Limpar:

A função (txt_razao = “”) limpa os TxtBox e a função “txt_razao.SetFocus” posiciona o pulsor neste campo txt_razao.

txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_contatos = “”
txt_data = “”
txt_observacao = “”
txt_razao.SetFocus

Botão Editar:

A função (lst_busca.Visible = False) vai ocultar a ListBox mais a label e Frame para liberar o cadastro.

lst_busca.Visible = False
Label18.Visible = False
Frame4.Visible = False

Botão Salvar:

Após feito alteração o botão salvar vai atualizar as informações lançadas. A função (Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”) Vai executar o laço até encontrar uma célula vazia condicção para localizar o registro.

A função (If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then) Vai encontrar o valor registro na célula pesquisada.

A função (Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select) Vai será selecionada a célula.

A função (Sheets(“DADOS CLIENTES”).Cells(Linha, 2) = txt_razao) está direcionando cada célula encontrada para efetivar as atualização.

Dim ID As Integer
ID = txt_id
Linha = 2
Sheets(“DADOS CLIENTES”).Select
Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”
‘condicção para localizar o registro
If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then
Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select
Sheets(“DADOS CLIENTES”).Cells(Linha, 2) = txt_razao
Sheets(“DADOS CLIENTES”).Cells(Linha, 3) = txt_endereço
Sheets(“DADOS CLIENTES”).Cells(Linha, 4) = txt_numero
Sheets(“DADOS CLIENTES”).Cells(Linha, 5) = txt_bairro
Sheets(“DADOS CLIENTES”).Cells(Linha, 6) = cmb_cidade
Sheets(“DADOS CLIENTES”).Cells(Linha, 7) = cmb_uf
Sheets(“DADOS CLIENTES”).Cells(Linha, 8) = txt_cep
Sheets(“DADOS CLIENTES”).Cells(Linha, 9) = txt_ddd
Sheets(“DADOS CLIENTES”).Cells(Linha, 10) = txt_telefone
Sheets(“DADOS CLIENTES”).Cells(Linha, 11) = TextBox2
Sheets(“DADOS CLIENTES”).Cells(Linha, 12) = txt_cnpj
Sheets(“DADOS CLIENTES”).Cells(Linha, 13) = txt_ie
Sheets(“DADOS CLIENTES”).Cells(Linha, 14) = txt_data
Sheets(“DADOS CLIENTES”).Cells(Linha, 15) = txt_email
Sheets(“DADOS CLIENTES”).Cells(Linha, 16) = txt_observacao
MsgBox (“Cadastro alterado com sucesso!”)
Call UserForm_Initialize
Exit Sub
End If
Linha = Linha + 1
Loop

Botão cadastrar:

A função (If txt_razao.Text = “” Then) deixa o campo txt_razao obrigatorio o seu preenchimento.

On Error Resume Next
If txt_razao.Text = “” Then
MsgBox “Preencha os Campos”
txt_razao.SetFocus
Exit Sub
End If
Sheets(“DADOS CLIENTES”).Select
Range(“A1048576”).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Dim data_cad As Date
ID = txt_id
razao = txt_razao
fantasia = txt_fantasia
endereço = txt_endereço
bairro = txt_bairro
cidade = cmb_cidade
uf = cmb_uf
Cepp = txt_cep
ddd = txt_ddd
telefone = txt_telefone
CELULAR = TextBox2
cnpj = txt_cnpj
ie = txt_ie
contatos = txt_contatos
data_cad = txt_data
observação = txt_observacao
ActiveCell = ID
ActiveCell.Offset(0, 1).Select
ActiveCell = razao
ActiveCell.Offset(0, 1).Select
ActiveCell = endereço
ActiveCell.Offset(0, 1).Select
ActiveCell = txt_numero
ActiveCell.Offset(0, 1).Select
ActiveCell = bairro
ActiveCell.Offset(0, 1).Select
ActiveCell = cidade
ActiveCell.Offset(0, 1).Select
ActiveCell = uf
ActiveCell.Offset(0, 1).Select
ActiveCell = Cepp
ActiveCell.Offset(0, 1).Select
ActiveCell = ddd
ActiveCell.Offset(0, 1).Select
ActiveCell = telefone
ActiveCell.Offset(0, 1).Select
ActiveCell = CELULAR
ActiveCell.Offset(0, 1).Select
ActiveCell = cnpj
ActiveCell.Offset(0, 1).Select
ActiveCell = ie
ActiveCell.Offset(0, 1).Select
ActiveCell = data_cad
ActiveCell.Offset(0, 1).Select
ActiveCell = txt_email
ActiveCell.Offset(0, 1).Select
ActiveCell = observação
txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_contatos = “”
txt_data = “”
txt_observacao = “”
txt_email = “”
CheckBox1 = False
Call UserForm_Initialize

Botão Novo:

A função (txt_razao = “”) limpa os TxtBox e a função “txt_razao.SetFocus” posiciona o pulsor neste campo txt_razao.

txt_razao = “”
txt_fantasia = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_uf = “”
cmb_cidade = “”
txt_cep = “”
txt_ddd = “”
txt_telefone = “”
TextBox2 = “”
txt_cnpj = “”
txt_ie = “”
txt_email = “”
txt_data = “”
txt_observacao = “”
Call UserForm_Initialize
CommandButton1.Enabled = True
txt_razao.SetFocus

Botão excluir:

A função (If txt_razao.Text = “” Then) deixa o campo txt_razao obrigatorio o seu preenchimento.

A função (Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = = CODIGO Then) Vai executar o laço até encontrar uma célula vazia condicção para localizar o registro.

A função (If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = ID Then) Vai encontrar o valor registro na célula pesquisada.

A função (ActiveCell.Rows(“1:1”).EntireRow.Select Selection.Delete Shift:=xlUp ActiveCell.Select). Este comando vai deletar toda a linha.

‘Call carrega_listaprodutos
Dim CODIGO As Integer
Linha = 2
CODIGO = txt_id
Sheets(“DADOS CLIENTES”).Select
Do Until Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = “”
‘condicção para localizar o código
If Sheets(“DADOS CLIENTES”).Cells(Linha, 1) = CODIGO Then
Sheets(“DADOS CLIENTES”).Cells(Linha, 1).Select
Dim resposta As String ‘cria a variável resposta
resposta = MsgBox(“O registro será excluído. Confirma a exclusão?”, vbYesNo) ‘cria a mensagem para determinar qual ação será executada
If resposta = vbYes Then ‘ se a resposta for sim então
‘comando para deletar toda a linha
ActiveCell.Rows(“1:1”).EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
‘limpa todos os campos do formulário
txt_id = “”
txt_razao = “”
txt_endereço = “”
txt_numero = “”
txt_bairro = “”
cmb_cidade = “”
txt_cep = “”
cmb_uf = “”
TextBox2 = “”
txt_ddd = “”
txt_telefone = “”
txt_data = “”
txt_observacao = “”
txt_ie = “”
txt_cnpj = “”
MsgBox (“Registro excluído com sucesso!!!”)
lst_busca.Clear
Call UserForm_Initialize
Else
End If
End If
Linha = Linha + 1
Loop
txt_razao.SetFocus

Segue planilha para baixar desbloqueada e fontes liberado.

Download

Olá, amigos! Inscreva-se em nosso canal do Youtube para não perder os próximos vídeos.

26 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


  1. Boa noite admin!
    Fiz um teste com o Calendário na Planilha de Cadastro de Clientes, achei interessante e opcional. Conseguir abrir ele em uma EstaPastaDeTrabalho mas, ele não inserir a data em uma célula ativa. Tem como fazer esta instrução?

  2. Ola admin!
    Tenho uma PastaDeTrabalho com planilhas de contabilidade e estou usando o calendário que tem na planilha de Cadastro de Clientes, achei lega, consigo abri-lo em qualquer planilha. Ele abre com um botão para selecionar datas na Text-box, o calendário abrindo em planilha tem a opção de inserir também datas em uma célula ativa?

      • Ola admin!
        Desculpe pela demora, estava sem Internet.
        É o seguinte, o calendário é magnifico, quero saber se ele só seleciona datas em uma TextBox ou ele abre na Planilha para selecionar datas e inserir em um célula ativa em qualquer Planilha.
        Obrigado.

        Geraldo Majela Gurgel

        Sete Lagoas/MG

  3. Ola admin!
    Desculpe pela demora, estava sem Internet.
    É o seguinte, o calendário é magnifico, quero saber se ele só seleciona datas em uma TextBox ou ele da para selecionar datas e inserir em um célula ativa em qualquer Planilha.
    Obrigado.

    Geraldo Majela Gurgel

    Sete Lagoas/MG

  4. OLA BOA NOITE O USER_FORN INITIALIZE ESTA OCULTO COMO FAÇO PRA EXIBIR SE POSSIVEL FALAR SEU SERVIÇO FICOU INCRIVEL PARABÉNS

      • É verdade. Pelo Chrome e tbm baseado no Chromium como o navegador Brave. Baixei pelo Firefox de boa.
        Obrigado por compartilhar a Planilha.
        Abç.

        • Olá Admin
          Uso Linux (RegataOS/OpenSUSE).
          Esta planilha não funciona no “CALC”(LibreOffice) por causa das macros?
          Ao clicar no botão “Cadastro Cliente”, dá erro : “Erro de Sintaxe do BASIC. Símbolo inesperado: Type.” E aponta erro na linha 707.ExportAsFixedFormat do Objeto do documento/Catalogo do objeto/VBA Projetc .
          Tbm tentei abrir no OnlyOffice, o botão “Cadastro Cliente” fica em modo de edição e não abre o link do botão.
          Abraço.
          Obrigado por compartilhar

  5. Bom dia… Gostaria de adquirir essa projeto vba mais com outras funcionalidades para cadastro de bens patrimônial como faço pra adquirir?

  6. boa noite amigo,
    baixei sua planilha de cadastro de cliente e por sinal muito boa.
    só que eu gostaria de acrescentar mais alguns detalhes, teria como me orientar de como faze-lo.
    obrigado amigo

  7. Olá Bom dia
    Esta sua planilha é ótima, parabéns pelo emprenho.
    Gostaria de saber se consigo fazer a pesquisa somente pelo nome, sem precisar selecionar o botão nome.
    Por que quando faço a pesquisa digito pelo nome, mas sempre tenho que selecionar a procura nome primeiro pra depois digitar.

    Muito agradecido
    Deus Abençoe

  8. Achei a planilha bem legal, mas notei falta de um complemento no campo do endereço, tipo, você coloca o CEP, ele acha o endereço automático, mas aí você coloca o numero do endereço, mas não tem campo de colocar apartamento, bloco, casa etc…
    Não existe o campo complemento para o endereço.

  9. Olá Bom dia
    Esta sua planilha é ótima, parabéns pelo emprenho.
    Sou voluntário em uma ONG. Estou querendo adapitar para cadastro em uma ONG, é possivei fazer alterações no formulario de cadastro.
    Gostaria de saber se consigo fazer a pesquisa somente pelo nome, para imprimir um ficha beneficiario?

    Muito agradecido
    Deus Abençoe

  10. ótimo vba, limpo e bem didático!!!
    mas… pq o outro form está oculto no projeto, como fazer ele aparecer para edição?

  11. Excelente VBA!
    Como sugestão, vale implenetar no cadastro o campo DATA DE NASCIMENTO para, posteriormente, ser exibido os aniversariantes do dia (e mês)!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.