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.
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
Para utilizar as referências XML no ambiente VBA precisa habilitar em “Ferramentas – Referencias” Microsoft XML, v3.0.
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.
Olá, amigos! Inscreva-se em nosso canal do Youtube para não perder os próximos vídeos.
Nao encontrei onde pode optar por PF ou Juridic
Neste cadastro não tem está opção.
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?
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?
Olá amigo não entendi sua necessidade.
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
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
Como fazer para evitar dados duplicados
Ola admin
Como faço pra inserir mais campos no cadastro?
Desde já obrigado
Junior
Sorocaba / SP
Não estou conseguindo baixar esta planilha, o link esta corrompido? alguém ai sabe dizer??
Olá amigo, Clique com o botão direito no botão Download opção Abrir link em um nova guia.
OLA BOA NOITE O USER_FORN INITIALIZE ESTA OCULTO COMO FAÇO PRA EXIBIR SE POSSIVEL FALAR SEU SERVIÇO FICOU INCRIVEL PARABÉNS
Como fazer download?
Olá amigo o navegador google chrome está com falhas para download favor usar outro navegador para baixar as planilhas.
É 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
Olá amigo sim não funciona no CALC LibreOffice.
Usei as instruções e nada acontece.
Bom dia… Gostaria de adquirir essa projeto vba mais com outras funcionalidades para cadastro de bens patrimônial como faço pra adquirir?
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
Boa tarde Admin
por um acaso teria a senha deste programa para que eu possa inserir mais informações
Obrigado
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
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.
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
ótimo vba, limpo e bem didático!!!
mas… pq o outro form está oculto no projeto, como fazer ele aparecer para edição?
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)!