Notifications
Clear all

Editar dados em "Cadastro de Clientes"

18 Posts
4 Usuários
0 Reactions
3,484 Visualizações
(@akaua)
Posts: 9
Active Member
Topic starter
 

Boa tarde pessoal,

Sou novo aqui e novo também no VBA.
Andei pesquisando na internet e vídeos no youtube para fazer um Cadastro de Clientes usando o VBA.
Fiz e etc, mas agora estou com um problema em que não acho a solução que eu entenda ou que se encaixe no meu código...
Preciso EDITAR os dados de algum cliente, caso precise.
No programinha, coloquei os botões SALVAR, EXCLUIR e FECHAR (para voltar a tela de login).
Fiz também as opções para localizar os clientes cadastrados, usando tanto o ID dele como o próprio nome.
Gostaria de por exemplo, procurar o cliente que quero alterar os dados, usando o mecanismo de localização que citei acima e após fazer a mudança,
ao clicar em SALVAR, ele ver que já existe e só altera ou completa o formulário do cliente.
No momento, quando faço isso, ele salva em uma nova linha como se fosse um cliente novo.
Seria possível isso usando o mesmo botão SALVAR ou vou precisar criar um novo?
Pra quem entende deve ser moleza, mas eu to quebrando a cabeça aqui..
Se alguém puder ajudar, ficarei grato.
Caso precise das informações dos códigos ou da planilha em si, só falar.

Obrigado!

Akauã Castanheira

 
Postado : 29/01/2016 1:52 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize seu arquivo com o codigo.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 29/01/2016 2:07 pm
(@messiasmbm)
Posts: 223
Estimable Member
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Olá, sou novo no forum e tenho um pouco de conhecimento.
No seu caso, se no seu programa existir (id) automático não sei se vou conseguir te ajudar, mais se for um campo de (id) onde você sempre precise digitar a sequencia numérica, pode ser usado no seu "TextBox1_AfterUpdate()" e o restante dos campos preencher automático.

Private Sub TextBox1_AfterUpdate()

'código sai da macro caso seja atualizado o campo vazio
If Me.TextBox1 = "" Then
Exit Sub
End If

Dim linha As Integer
Dim codigo As String

codigo = TextBox.Text

On Error GoTo nao_encontrado

'Localiza um registro sem o looping pelo método find
linha = Sheets("Plan1").Range("A:A").Find(codigo).Row

Me.btnAtualizar.Enabled = True
btnSalvar.Enabled = False

TextBox2 = Sheets("Plan1").Cells(linha, 2)

Exit Sub

nao_encontrado:

TextBox2.Text = ""

btnAtualizar.Enabled = False
Me.btnSalvar.Enabled = True

End Sub

Você vai precisar de um botão "Atualizar".
Espero que tenha te ajudado de alguma forma.

 
Postado : 29/01/2016 8:36 pm
(@akaua)
Posts: 9
Active Member
Topic starter
 

http://www.tomasvasquez.com.br/forum/viewtopic.php?f=23&t=3899
https://www.youtube.com/watch?v=_TAiItN7iPU&feature=youtu.be
Já tem pronto ... Mas estude por este.

Irei dar uma olhada, muito obrigado!

Akauã Castanheira

 
Postado : 01/02/2016 9:00 am
(@akaua)
Posts: 9
Active Member
Topic starter
 

Olá, sou novo no forum e tenho um pouco de conhecimento.
No seu caso, se no seu programa existir (id) automático não sei se vou conseguir te ajudar, mais se for um campo de (id) onde você sempre precise digitar a sequencia numérica, pode ser usado no seu "TextBox1_AfterUpdate()" e o restante dos campos preencher automático.

Agradeço desde já a sua ajuda.
Meu campo (id) é manual, sempre irei por.
Criei um botão "Atualizar" como sugerido.
Entendi um pouco o processo que você passou acima, mas como sou leigo no assunto, tenho uma dúvida que possa ser "ignorância" da minha parte.
Mas, onde exatamente eu irei por o "TextBox1_AfterUpdate()"? (ou é outro nome que eu tenho que trocar?)

Fico no aguardo da sua boa vontade.
Obrigado!

Akauã Castanheira

 
Postado : 01/02/2016 11:15 am
(@akaua)
Posts: 9
Active Member
Topic starter
 

Abaixo segue como está o meu código atualmente.

Private Sub button_clean_Click()

register_id = ""
register_name = ""
register_address = ""
register_number = ""
register_bairro = ""
register_tel1 = ""
register_tel2 = ""
register_email = ""
register_note = ""
search_id = ""
search_name = ""
register_id.SetFocus

End Sub

Private Sub button_close_Click()

'Fechar cadastro de clientes e voltar pra Login

Unload REGISTER
Login.Show

End Sub

Private Sub button_delete_Click()

'Cliente não selecionado para excluir (ID e Nome)

If search_id.ListIndex = -1 And search_name.ListIndex = -1 Then
    MsgBox "Selecione um cliente!", , "Nome da Empresa"
    Exit Sub
Else

'Declarando variável da linha que será excluído

    If search_id.ListIndex <> -1 And search_name.ListIndex = -1 Then
    var_line_id = search_id.ListIndex + 2
    Worksheets("BancoDeDados").Rows(var_line_id).Delete
    MsgBox "Cliente excluído com sucesso!"
    
    register_id = ""
    register_name = ""
    register_address = ""
    register_number = ""
    register_bairro = ""
    register_tel1 = ""
    register_tel2 = ""
    register_email = ""
    register_note = ""
    search_id = ""
    register_id.SetFocus
    Exit Sub
    
    Else
    
'Declarando variável da linha que será excluído

    var_line_name = search_name.ListIndex + 2
    Worksheets("BancoDeDados").Rows(var_line_name).Delete
    MsgBox "Cliente excluído com sucesso!"
    
    register_id = ""
    register_name = ""
    register_address = ""
    register_number = ""
    register_bairro = ""
    register_tel1 = ""
    register_tel2 = ""
    register_email = ""
    register_note = ""
    search_name = ""
    register_id.SetFocus
    Exit Sub
    
    End If
End If

End Sub

Private Sub button_save_Click()

'Não salvar dados caso campos ID e Nome não seja preenchido

If register_id = "" Then
    MsgBox "Por favor, insira o ID do cliente!", , "Nome da Empresa"
    register_id.SetFocus
    Exit Sub
Else
    If register_name = "" Then
        MsgBox "Por favor, insira o nome do cliente!", , "Nome da Empresa"
        register_name.SetFocus
        Exit Sub
    Else

'Declarando variável que irá armazenar os dados

var_total_register = Sheets("BancoDeDados").Range("A" & Sheets("BancoDeDados").Rows.Count).End(xlUp).Row + 1

'Selecionando Planilha Banco de Dados

Worksheets("BancoDeDados").Select

'Gravação dos Dados

Cells(var_total_register, 1) = register_id
Cells(var_total_register, 2) = register_name
Cells(var_total_register, 3) = register_address
Cells(var_total_register, 4) = register_number
Cells(var_total_register, 5) = register_bairro
Cells(var_total_register, 6) = register_tel1
Cells(var_total_register, 7) = register_tel2
Cells(var_total_register, 8) = register_email
Cells(var_total_register, 9) = register_note

MsgBox "Dados gravados com sucesso!", , "Nome da Empresa"

register_id = ""
register_name = ""
register_address = ""
register_number = ""
register_bairro = ""
register_tel1 = ""
register_tel2 = ""
register_email = ""
register_note = ""

register_id.SetFocus

    End If
End If

'Declarando variável para localização

var_search_id = Worksheets("BancoDeDados").UsedRange.Rows.Count
var_search_name = Worksheets("BancoDeDados").UsedRange.Rows.Count

'Configurando localização de clientes

search_id.RowSource = "BancoDeDados!a2:a" & var_search_id
search_name.RowSource = "BancoDeDados!b2:b" & var_search_name

End Sub

Private Sub register_address_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &HE0E0E0
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_bairro_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &HE0E0E0
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_email_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &HE0E0E0
register_note.BackColor = &H80000005

End Sub

Private Sub register_id_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &HE0E0E0
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_name_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &HE0E0E0
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_note_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &HE0E0E0

End Sub

Private Sub register_number_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &HE0E0E0
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_tel1_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &HE0E0E0
register_tel2.BackColor = &H80000005
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub register_tel2_Enter()

'&H00E0E0E0& cinza claro
'&H80000005& branco

register_id.BackColor = &H80000005
register_name.BackColor = &H80000005
register_address.BackColor = &H80000005
register_number.BackColor = &H80000005
register_bairro.BackColor = &H80000005
register_tel1.BackColor = &H80000005
register_tel2.BackColor = &HE0E0E0
register_email.BackColor = &H80000005
register_note.BackColor = &H80000005

End Sub

Private Sub search_id_Click()

Worksheets("BancoDeDados").Select

'Declarando variáveis para localizar pelo ID

var_total_search = Worksheets("BancoDeDados").UsedRange.Rows.Count

For s = 0 To var_total_search

    If search_id.ListIndex = s Then

'Preenchendo os campos

    register_id = Cells(s + 2, 1)
    register_name = Cells(s + 2, 2)
    register_address = Cells(s + 2, 3)
    register_number = Cells(s + 2, 4)
    register_bairro = Cells(s + 2, 5)
    register_tel1 = Cells(s + 2, 6)
    register_tel2 = Cells(s + 2, 7)
    register_email = Cells(s + 2, 8)
    register_note = Cells(s + 2, 9)
    search_name = ""
    End If
    
Next

End Sub

Private Sub search_id_DropButtonClick()

'Colocando ID em ordem crescente

search_name = ""
Ordenar_ID

End Sub

Private Sub search_name_Click()

Worksheets("BancoDeDados").Select

'Declarando variáveis para localizar pelo Nome

var_total_search = Worksheets("BancoDeDados").UsedRange.Rows.Count

For s = 0 To var_total_search

    If search_name.ListIndex = s Then

'Preenchendo os campos

    register_id = Cells(s + 2, 1)
    register_name = Cells(s + 2, 2)
    register_address = Cells(s + 2, 3)
    register_number = Cells(s + 2, 4)
    register_bairro = Cells(s + 2, 5)
    register_tel1 = Cells(s + 2, 6)
    register_tel2 = Cells(s + 2, 7)
    register_email = Cells(s + 2, 8)
    register_note = Cells(s + 2, 9)
    search_id = ""
    End If
    
Next

End Sub

Private Sub search_name_DropButtonClick()

'Colocando Nome em ordem crescente

search_id = ""
Ordenar_Nome

End Sub

Private Sub UserForm_Initialize()

'Declarando variável para mostrar os dados na localização

var_search_id = Worksheets("BancoDeDados").UsedRange.Rows.Count
var_search_name = Worksheets("BancoDeDados").UsedRange.Rows.Count

'Mostrando os dados da localização na inicialização

search_id.RowSource = "BancoDeDados!a2:a" & var_search_id
search_name.RowSource = "BancoDeDados!b2:b" & var_search_name

End Sub

Akauã Castanheira

 
Postado : 01/02/2016 11:29 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Olá. Se o seu primeiro "Textbox" for o "register_id" então voçê vai criar esse código que te passei começando com:

Private Sub register_id_AfterUpdate()
'código sai da macro caso seja atualizado o campo vazio
If Me.register_id = "" Then
Exit Sub
End If

Dim linha As Integer
Dim codigo As String

codigo = register_id.Text

On Error GoTo nao_encontrado

'Localiza um registro sem o looping pelo método find
linha = Sheets("Plan1").Range("A:A").Find(codigo).Row

Me.btnAtualizar.Enabled = True
btnSalvar.Enabled = False

register_name = Sheets("Plan1").Cells(linha, 2)
register_address=Sheets("Plan1").Cells(linha,3)

' e assim por diante

Exit Sub

nao_encontrado:

register_name.Text = ""
register_address.Text=""

' e assim por diante

btnAtualizar.Enabled = False
Me.btnSalvar.Enabled = True

End Sub

O "AfterUpdate" é para chamar a linha que você precisa editar no "form".
Tenta adaptar ao seu programa.

 
Postado : 01/02/2016 1:08 pm
(@akaua)
Posts: 9
Active Member
Topic starter
 

Boa tarde,

Consegui adaptar ao meu programa.
Só que agora estou com uma outra dúvida.
Quando eu insiro manualmente o ID e dou o enter, ele já preenche todo o formulário do respectivo cliente (caso exista mesmo o ID inserido) e se altero algo e depois clico em Atualizar, ele atualiza corretamente.
Agora, quando eu busco o cliente pelo campo Pesquisar (fiz para pesquisar id e nome - search_id e search_name), ele preenche todo o formulário também, mas se altero algo e clico em Atualizar, ele dá a mensagem que os dados foram gravados mas na verdade não grava.
O que faltou eu fazer para que a função Atualizar funcione também, não só quando eu digito o ID manualmente, mas também quando busco o cliente pelo campo Pesquisar ID ou Pesquisar Nome.
Tentei fazer "search_id_AfterUpdate()" e "search_name_AfterUpdate" e (supostamente) não deu certo.
Não tem como? É assim mesmo, só digitando?

Obrigado desde já.

Akauã Castanheira

 
Postado : 03/02/2016 11:01 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Olá amigo.
Manda o seu arquivo.

Att,

Francisco

 
Postado : 03/02/2016 8:34 pm
(@akaua)
Posts: 9
Active Member
Topic starter
 

Olá Francisco,

Segue em anexo.

Não liga não que possa ter algumas gambiarras que nem eu mesmo soube o que fiz.

Obrigado!

Akauã Castanheira

 
Postado : 04/02/2016 6:13 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Ola Akau.
Teste aqui seu arquivo e alterei para "AfterUpdate" e funcionou. Acho que você não estava avançando com "Tab". Pois no evento estava quando clicar. "search_id_Click()".
Fiz algumas alterações, faz um teste aí espero que goste. Tem um problema ainda quando usa o "search_id_AfterUpdate()" na hora de excluir o registro.

Att,

Francisco

 
Postado : 04/02/2016 3:22 pm
(@akaua)
Posts: 9
Active Member
Topic starter
 

Boa tarde Francisco.

Rapaz, eu esqueci de tirar a senha para ter acesso ao código (na verdade eu nem sei como que tira), como foi que você fez?

Eu vi aqui as mudanças, gostei, muito obrigado.
Você bloqueou os campos id e telefone's para receber somente números.
E só mudou o _Click pelo _AfterUpdate né. Eu tinha apenas adicionado o _AfterUpdate mas deixado o _Click (nos search_id e _name).

Pois é, eu já tinha notado o seguinte, só consigo excluir o registro selecionando pelo "pesquisar".
Caso eu digite o ID e dou enter/tab e em seguida clico em excluir, pede para eu selecionar o cliente.
Por que será?

Valeu mesmo pela força com a atualização.

Akauã Castanheira

 
Postado : 05/02/2016 11:11 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Boa tarde Akaua.
Ontem eu continuei dando uma olha na sua planilha e fiz outra alteração e agora está excluindo quando faz a pesquisa pelo "AfterUpdate". quando eu chegar em casa te mando. Tem os campos do telefone que podem ser separados por "() 00000-0000" e alterar o "text" para a quantidade de caracteres exata com o "TAB" automático. Se você preferir.

att,

Francisco

 
Postado : 05/02/2016 11:37 am
(@akaua)
Posts: 9
Active Member
Topic starter
 

Francisco,

Ah, você conseguiu arrumar a função excluir pelo pesquisa AfterUpdate? Perfeito, vou aguardar você me mandar então. Obrigado!
Hum, seria uma boa deixar separado os campos de telefone com "() 00000-0000". Já havia pensado nisso, mas seria muito complicado pra mim.
Eu já quase não entendi muito bem os códigos e funções que você usou para bloquear os caracteres alfa.
Como que ficaria no caso de ser número residencial (que é um digito a menos que o de celular) e continuar com o tab automático?

Obrigado!

Akauã Castanheira

 
Postado : 05/02/2016 12:34 pm
Página 1 / 2