Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por Luciano021273
Posts
#12394
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
Avatar do usuário
Por gfranco
Avatar
#12395
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
Por Luciano021273
Posts
#12397
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.
Avatar do usuário
Por gfranco
Avatar
#12400
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.
Por Luciano021273
Posts
#12464
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.
Por Luciano021273
Posts
#12465
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
Avatar do usuário
Por gfranco
Avatar
#12471
Bom dia Luciano. Poste um modelo da planilha que dou uma olhada na estrutura pra vc.
Por Luciano021273
Posts
#12474
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
Avatar do usuário
Por laennder
Avatar
#12511
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord