Página 1 de 1

Salvar alterações de dados

Enviado: 02 Jul 2016 às 15:10
por Luciano021273
Boa tarde, a todos!

Criei uma rotina de cadastro de clientes, com a intenção de não deixar repetir os nomes nem dado algum, só que não esta funcionando, ele até me da uma mensagem de clientes existente, mas faço alteração dos dados o problema que esta duplicando o registro, vou enviar o código para ver onde estou errando

Um detalhe as vezes quero alterar da seguinte forma, quando faço um cadastro rapidamente pego só o primeiro nome depois faço o dastro completo e gostaria que ele mantesse o mesmo numero de registro na mesma linha do banco de dados...


Private Sub btSalvar_Click()
Application.ScreenUpdating = False

Plan1.Select
Range("A2").Select

Dim iRow As Long
Dim WS As Worksheet
Set WS = Worksheets("Cadastro_de_Clientes")
Range("B2").Select

While ActiveCell <> ""
If cx_nome_cliente.Text = ActiveCell Then
If MsgBox("Cliente já Existe, deseja susbtituir?", vbYesNo) = vbYes Then

Else
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'C_AGENDA_DE_MEDIDAS.txtFcodcliente = ""
C_AGENDA_DE_MEDIDAS.cx_nome_cliente = ""
C_AGENDA_DE_MEDIDAS.cx_tel_celular = ""
C_AGENDA_DE_MEDIDAS.cx_tel_fixo = ""
C_AGENDA_DE_MEDIDAS.cx_tel_trabalho = ""
C_AGENDA_DE_MEDIDAS.cx_email = ""
C_AGENDA_DE_MEDIDAS.cx_endereço = ""
C_AGENDA_DE_MEDIDAS.cx_numero = ""
C_AGENDA_DE_MEDIDAS.cx_ap = ""
C_AGENDA_DE_MEDIDAS.cx_Bloco = ""
C_AGENDA_DE_MEDIDAS.cx_predio = ""
C_AGENDA_DE_MEDIDAS.cx_Bairro = ""
C_AGENDA_DE_MEDIDAS.cx_cidade = ""
C_AGENDA_DE_MEDIDAS.cx_aproximidade = ""
C_AGENDA_DE_MEDIDAS.cx_afazeres = ""
C_AGENDA_DE_MEDIDAS.txtDataCompromisso = ""
C_AGENDA_DE_MEDIDAS.cx_hora_compromisso = ""
C_AGENDA_DE_MEDIDAS.cmbnome_funcionario = ""
C_AGENDA_DE_MEDIDAS.ComboBox1 = ""
C_AGENDA_DE_MEDIDAS.ComboBox2 = ""
C_AGENDA_DE_MEDIDAS.ComboBox3 = ""
C_AGENDA_DE_MEDIDAS.ComboBox4 = ""
C_AGENDA_DE_MEDIDAS.ComboBox5 = ""
C_AGENDA_DE_MEDIDAS.ComboBox6 = ""
C_AGENDA_DE_MEDIDAS.ComboBox7 = ""
C_AGENDA_DE_MEDIDAS.ComboBox8 = ""
C_AGENDA_DE_MEDIDAS.ComboBox9 = ""
C_AGENDA_DE_MEDIDAS.ComboBox10 = ""
C_AGENDA_DE_MEDIDAS.ComboBox11 = ""
C_AGENDA_DE_MEDIDAS.ComboBox12 = ""
C_AGENDA_DE_MEDIDAS.cx_observações = ""
C_AGENDA_DE_MEDIDAS.cmb_pesquisa.SetFocus

Exit Sub
End If
End If
ActiveCell.Offset(1, 0).Activate
Wend

If cx_nome_cliente.Value = "" Then
MsgBox " Selecione Algum Nome Para Poder Cadastrar!"
Exit Sub
End If
iRow = ActiveCell.Row

WS.Cells(iRow, 1).Value = Me.txtFcodcliente.Value
WS.Cells(iRow, 2).Value = Me.cx_nome_cliente.Value
WS.Cells(iRow, 3).Value = Me.cx_tel_celular.Value
WS.Cells(iRow, 4).Value = Me.cx_tel_fixo.Value
WS.Cells(iRow, 5).Value = Me.cx_tel_trabalho.Value
WS.Cells(iRow, 6).Value = Me.cx_email.Value
WS.Cells(iRow, 7).Value = Me.cx_endereço.Value
WS.Cells(iRow, 8).Value = Me.cx_numero.Value
WS.Cells(iRow, 9).Value = Me.cx_ap.Value
WS.Cells(iRow, 10).Value = Me.cx_Bloco.Value
WS.Cells(iRow, 11).Value = Me.cx_predio.Value
WS.Cells(iRow, 12).Value = Me.cx_Bairro.Value
WS.Cells(iRow, 13).Value = Me.cx_cidade.Value
WS.Cells(iRow, 14).Value = Me.cx_aproximidade.Value
WS.Cells(iRow, 15).Value = Me.cx_afazeres.Value
WS.Cells(iRow, 16).Value = Me.txtDataCompromisso.Value
WS.Cells(iRow, 17).Value = Format(Me.cx_hora_compromisso.Value, "HH:MM")
WS.Cells(iRow, 18).Value = Me.cmbnome_funcionario.Value
WS.Cells(iRow, 19).Value = Me.ComboBox1.Value
WS.Cells(iRow, 20).Value = Me.ComboBox2.Value
WS.Cells(iRow, 21).Value = Me.ComboBox3.Value
WS.Cells(iRow, 22).Value = Me.ComboBox4.Value
WS.Cells(iRow, 23).Value = Me.ComboBox5.Value
WS.Cells(iRow, 24).Value = Me.ComboBox6.Value
WS.Cells(iRow, 25).Value = Me.ComboBox7.Value
WS.Cells(iRow, 26).Value = Me.ComboBox8.Value
WS.Cells(iRow, 27).Value = Me.ComboBox9.Value
WS.Cells(iRow, 28).Value = Me.ComboBox10.Value
WS.Cells(iRow, 29).Value = Me.ComboBox11.Value
WS.Cells(iRow, 30).Value = Me.ComboBox12.Value
WS.Cells(iRow, 31).Value = Me.cx_observações.Value
Call Bordas_II
continue:

MsgBox "Cliente Salvo com Sucesso!!!", , ""

''''#########################################################################################
''Gera o codigo de cliente automático...................................
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Linha = 2
contador = 0
Do Until Sheets("Cadastro_de_Clientes").Cells(Linha, 1) = ""
If Sheets("Cadastro_de_Clientes").Cells(Linha, 1) > contador Then
contador = contador + 1
Linha = Linha + 1
Else
End If
Loop
contador = contador + 1
txtFcodcliente = contador & "." & Format(Date, "dd.m.yy")
'''''#################################################################################################
ActiveWorkbook.Save
Application.ScreenUpdating = True

End Sub

Salvar alterações de dados

Enviado: 02 Jul 2016 às 17:58
por gfranco
Boa noite Luciano021273.
Me parece que está faltando a instrução para a substituição.

If cx_nome_cliente.Text = ActiveCell Then ' verifica se a célula ativa é igual ao nome pesquisado
If MsgBox("Cliente já Existe, deseja susbtituir?", vbYesNo) = vbYes Then 'pergunta se deseja substituir ou não

aqui deveria constar a rotina de substituição mas veja que, se a opção escolhida for "VBYES" nada será feito. Só tem instrução para "ELSE"', ou seja, caso a opção escolhida seja 'VBNO' !!

Else
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


At.
gfranco

Salvar alterações de dados

Enviado: 02 Jul 2016 às 19:55
por Luciano021273
Boa noite! Obrigado por retornar ,
Teria como enviar um exemplo nessa rotina de substituição, tentei diminuir o codigo limpando um vez as textbox, no vbno, mas não funcionou...
grato,
Luciano.

Salvar alterações de dados

Enviado: 02 Jul 2016 às 20:32
por gfranco
Como no momento da substituição provavelmente, o código do cliente já terá sido preenchido, vc pode apenas copiar as instruções de gravação ( como se fosse um cliente novo) para o caso de "vbyes" ser selecionado, omitindo a instrução de geração de código do cliente e finalizando com um "exit sub" para que não seja gravado novamente na última posição.

Salvar alterações de dados

Enviado: 04 Jul 2016 às 20:45
por Luciano021273
Boa noite, Gfranco!

Ainda esta permanecendo o erro de quando for salvar duplicar o cliente com o mesmo codigo
poderia fazer um exemplo de como ficaria o codigo, após o vbyes...

att,
Luciano.

Salvar alterações de dados

Enviado: 04 Jul 2016 às 21:42
por Luciano021273
consegui fazer alterar ou salvar conforme precisa só que não estou conseguindo caso a resposta for não ele ainda continua salvando
tentei colocar um else mas fica pedindo um if
ficou assim o codigo
gostaria que me ajudasse a colocar para que se a resposta for não ele saia da rotina sem fazer nada...

Plan1.Select
Range("A2").Select

Dim iRow As Long
Dim WS As Worksheet

Set WS = Worksheets("Cadastro_de_Clientes")
Range("a2").Select

While ActiveCell <> ""
If txtFcodcliente.Text = ActiveCell Then
If MsgBox("Cliente já Existe, deseja susbtituir?", vbYesNo) = vbYes Then

iRow = ActiveCell.Row

WS.Cells(iRow, 1).Value = Me.txtFcodcliente.Value
WS.Cells(iRow, 2).Value = Me.cx_nome_cliente.Value
WS.Cells(iRow, 3).Value = Me.cx_tel_celular.Value
WS.Cells(iRow, 4).Value = Me.cx_tel_fixo.Value
WS.Cells(iRow, 5).Value = Me.cx_tel_trabalho.Value
WS.Cells(iRow, 6).Value = Me.cx_email.Value
WS.Cells(iRow, 7).Value = Me.cx_endereço.Value



'C_AGENDA_DE_MEDIDAS.txtFcodcliente = ""
C_AGENDA_DE_MEDIDAS.cx_nome_cliente = ""
C_AGENDA_DE_MEDIDAS.cx_tel_celular = ""
C_AGENDA_DE_MEDIDAS.cx_tel_fixo = ""
C_AGENDA_DE_MEDIDAS.cx_tel_trabalho = ""
C_AGENDA_DE_MEDIDAS.cx_email = ""
C_AGENDA_DE_MEDIDAS.cx_endereço = ""


C_AGENDA_DE_MEDIDAS.cmb_pesquisa.SetFocus

MsgBox "Cliente Substituido com Sucesso!!!", , ""
Exit Sub
End If
End If

ActiveCell.Offset(1, 0).Activate
Wend

If txtFcodcliente.Value = "" Then
MsgBox " Selecione Algum Nome Para Poder Cadastrar!"
Exit Sub
End If
iRow = ActiveCell.Row

WS.Cells(iRow, 1).Value = Me.txtFcodcliente.Value
WS.Cells(iRow, 2).Value = Me.cx_nome_cliente.Value
WS.Cells(iRow, 3).Value = Me.cx_tel_celular.Value
WS.Cells(iRow, 4).Value = Me.cx_tel_fixo.Value
WS.Cells(iRow, 5).Value = Me.cx_tel_trabalho.Value
WS.Cells(iRow, 6).Value = Me.cx_email.Value
WS.Cells(iRow, 7).Value = Me.cx_endereço.Value



'C_AGENDA_DE_MEDIDAS.txtFcodcliente = ""
C_AGENDA_DE_MEDIDAS.cx_nome_cliente = ""
C_AGENDA_DE_MEDIDAS.cx_tel_celular = ""
C_AGENDA_DE_MEDIDAS.cx_tel_fixo = ""
C_AGENDA_DE_MEDIDAS.cx_tel_trabalho = ""
C_AGENDA_DE_MEDIDAS.cx_email = ""
C_AGENDA_DE_MEDIDAS.cx_endereço = ""


C_AGENDA_DE_MEDIDAS.cmb_pesquisa.SetFocus
MsgBox "Cliente Salvo com Sucesso!!!", , ""


Call Bordas_II





''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'C_AGENDA_DE_MEDIDAS.txtFcodcliente = ""
C_AGENDA_DE_MEDIDAS.cx_nome_cliente = ""
C_AGENDA_DE_MEDIDAS.cx_tel_celular = ""
C_AGENDA_DE_MEDIDAS.cx_tel_fixo = ""
C_AGENDA_DE_MEDIDAS.cx_tel_trabalho = ""
C_AGENDA_DE_MEDIDAS.cx_email = ""
C_AGENDA_DE_MEDIDAS.cx_endereço = ""


C_AGENDA_DE_MEDIDAS.cmb_pesquisa.SetFocus

Re: Salvar alterações de dados

Enviado: 05 Jul 2016 às 06:24
por gfranco
Bom dia Luciano. Poste um modelo da planilha que dou uma olhada na estrutura pra vc.

Salvar alterações de dados

Enviado: 05 Jul 2016 às 08:57
por Luciano021273
Bom dia, Gfranco!

Estou enviando um modelo da planilha, se puder dar uma olhadinha no userform de negociação tb, ali tenho alguns problemas, fiz uma gambiarra onde se não digito algum desconto não consigo imprimir orçamento, porque as textbox não estão se comunicando, no desconto também não consegui fazer com que se o desconto for maior que 5% em cada textbox me joga para a textbox senha digitar a ssenha e liberar para a negociação, no userform cadastro de medidas, queria que quando abrir o formulário abrisse com a listview 2 aparecesse somente os compromissos de hoje... em fim tanta coisa por melhorar, fui criando gambiarras para fazer funcionar e foi ficando extenso, sei que é um forum e vcs estão aqui para dar dicas, mas se não ajudarem não aprendemos a fazer o certo, os cursos de excel avançados e bem limitados, principalmente em minha região... Agradeço se puder dar uma olhada em geral para melhorar a planilha

Salvar alterações de dados

Enviado: 06 Jul 2016 às 16:12
por laennder
Tópico trancado temporariamente para análise de reclamação quanto ao conteúdo das mensagens e anexos.

Após análise será destrancado caso não aja nenhuma irregularidade.

Att,

A Administração