Ir para conteúdo
Fórum Script Brasil
  • 0

Formulário pesquisa e cadastro Userform Excel


master2005

Pergunta

Olá pessoal

Eu criei uma planilha simples para controle de clientes onde eu cadastro os dados através de um formulário em VBA, vou tentar explicitar ela aqui.

Criei uma planilha (Plan1) no excel com 7 colunas de dados:

Código Nome Logradouro Nº Bairro Cidade

01 Ana Rua Longe 100 Centro Modelo

02 José Rua da Ladeira 430 POMAR Modelo

03 Edson Rua Formosa 212 Centro Modelo

04 André Rua das Rosas 331 Centro Modelo

A - Código

B - Nome

C - Logradouro

D- Número

E - Bairro

F - Cidade

E no VBA fiz 2 Fomulários:

Formulário 1 - Projeto

- Possui 7 'textboxs' e 6 "listbox"(um para cada coluna do excel) onde eu cadastro os dados na planilha.

- 'Botões de comando': Cadastrar, Alterar, Pesquisar, Excluir, Primeiro, Próximo, Anterior e Último.

O QUE EU DESEJO CRIAR (MAS NÃO SEI):

Formulário 2 - Pesquisa (Tentei isso pela primeira vez, e não deu certo)

- Possui uma 'caixa de texto' (aqui é para eu digitar o nome do cliente desejado);

- Um 'botão de comando' (quando clicar nele, vai aparecer o cliente desejado numa lista abaixo da caixa de texto);

- Quando clicar 2 vezes sobre o cliente selecionado, deverá carregar os dados da pesquisa para o Formulário 1, ou então clicar 1 vez em outro botão para carregar os dados.

Eu abro o Formulário 1 (onde tem alguns clientes cadastrados), então clico no botão PESQUISAR e ele abre o Formulário 2 (como um popup) ai eu digito na 'caixa de texto' um NOME e depois clico em pesquisar, ai vai aparecer o cliente pesquisado abaixo, onde eu possa selecionar ele através de clique ou botão, e abrir no formulário 1.

Resumindo: Formulário 2: Pesquisa - Digitar um NOME na caixa > Clicar o 'botão de comando' > voltar ao Formulário 1 > carregar os 7 campos com os dados do NOME escolhido.

2ª DÚVIDA E NECESSIDADE:

Depois de carregado os dados no formulário 1, quero criar um botão de comando onde eu possa visualizar somente os dados atuais do formulário num relatório na tela.

O que eu fiz:

- Na Plan1 vai todos os dados cadastrados no formulário 1;

- Na Plan2, eu fiz um modelo de ficha do cadastro com todas as células onde eu quero carregar os dados em branco, apenas receber os dados para visualização e impressão;

O QUE EU NECESSITO:

- Que após abrir o formulário e mostrar o cliente atual na tela, ao clicar no botão VISUALIZAR, quero que o sistema leve os dados do "formulário 1" para a Plan2 e mostre-o em seguida em relatório.

Segue a Plan2 na qual desejo que receba os dados para visualização e impressão:

Planilha Clientes para visualização e impressão

http://img11.imagevenue.com/img.php?image=...s_122_429lo.jpg

Então quero que me ensinem passo a passo como criar essa pesquisa, seleção do cliente e também como carregar no formulário 1 e levar esses dados para a Plan2.

Se alguém já tiver o exemplo pronto para me enviar, vou adorar.

Espero que me ajudem se possível.

Ficarei eternamente grato.

Abraços a todos.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Caro Colega,

Vou tentar resolver seu problema por partes. Fiz uma telinha de pesquisa que deve te atender. Se tiver dificuldades para retornar o conteúdo pesquisado vamos continuar com o assunto neste tópico aqui no fórum. Eis o que foi feito:

1 - Criei um módulo que chamei de Publicos. Este módulo contém todas as variáveis e procedimentos que serão compartilhados para os dois formulários. A princípio vai ter uma única linha de código:

Public Linhas(1000) As String 'Define uma matriz onde estarão listados os resultados

2 - No formulário de pesquisa eu coloquei 4 componentes

a) lblPesquisa: um rótulo mostrando a mensagem "Digite o nome do cliente:"

B) txtPesquisar: uma caixa de texto onde o usuário digitará o texto a ser pesquisado

c) btnPesquisar: um botão que vai disparar a pesquisa

d) lstResultado: lista que vai retornar o resultado da pesquisa

3 - Abaixo vai o código do botão pesquisar:

Private Sub btnPesquisar_Click()

'Tratamento de erro

On Error GoTo Erro

'Declaração de variáveis

Dim I As Integer 'Variável de manipulação do For

Dim ContLinhas As Integer 'Contador de Linhas

Dim PosLista As Integer 'Contador de Posições na Lista

Dim ClienteAtual As String 'Dados do Cliente Atual

'Limpa quaisquer códigos que possam existir na lista

For I = LBound(Publicos.Linhas) To UBound(Publicos.Linhas)

Publicos.Linhas(I) = ""

Next I

'Altera o cursor para ampulheta

Application.Cursor = xlWait

'Limpa a lista

PosLista = -1

lstResultado.Clear

'Passa por todas as linhas para ver se encontra o Cliente

'Pára quando encontrar uma linha em branco

'Começa da linha 2 porque a primeira é o título

ContLinhas = 2

ClienteAtual = Range("B" & CStr(ContLinhas)).Text

While ClienteAtual <> ""

'Se encontrar um cliente de acordo com a pesquisa inclui na lista

'Coloca tudo em maiúsucla para evitar problemas com capslock

If UCase(ClienteAtual) Like ("*" & UCase(txtPesquisar.Text) & "*") Then

PosLista = PosLista + 1

lstResultado.AddItem ClienteAtual

Publicos.Linhas(PosLista) = ContLinhas

End If

'Verifica o próximo cliente

ContLinhas = ContLinhas + 1

ClienteAtual = Range("B" & CStr(ContLinhas)).Text

Wend

'Volta o cursor para o normal

Application.Cursor = xlDefault

'Se não der erro até aqui, sai da SUB

Exit Sub

Erro:

'Se der erro altera o cursor para padrão e mostra a mensagem de erro

MsgBox CStr(Err.Number) & " - " & Err.Description, , "Erro"

Application.Cursor = xlDefault

End Sub

Tente prosseguir com seu aplicativo a partir daí e, se tiver alguma dúvida é só chamar

Bráulio Figueiredo Pinto

braulio@braulioti.com.br

http://www.braulioti.com.br

Link para o comentário
Compartilhar em outros sites

  • 0
Caro Colega,

Vou tentar resolver seu problema por partes. Fiz uma telinha de pesquisa que deve te atender. Se tiver dificuldades para retornar o conteúdo pesquisado vamos continuar com o assunto neste tópico aqui no fórum. Eis o que foi feito:

1 - Criei um módulo que chamei de Publicos. Este módulo contém todas as variáveis e procedimentos que serão compartilhados para os dois formulários. A princípio vai ter uma única linha de código:

Public Linhas(1000) As String 'Define uma matriz onde estarão listados os resultados

2 - No formulário de pesquisa eu coloquei 4 componentes

a) lblPesquisa: um rótulo mostrando a mensagem "Digite o nome do cliente:"

B) txtPesquisar: uma caixa de texto onde o usuário digitará o texto a ser pesquisado

c) btnPesquisar: um botão que vai disparar a pesquisa

d) lstResultado: lista que vai retornar o resultado da pesquisa

3 - Abaixo vai o código do botão pesquisar:

Private Sub btnPesquisar_Click()

'Tratamento de erro

On Error GoTo Erro

'Declaração de variáveis

Dim I As Integer 'Variável de manipulação do For

Dim ContLinhas As Integer 'Contador de Linhas

Dim PosLista As Integer 'Contador de Posições na Lista

Dim ClienteAtual As String 'Dados do Cliente Atual

'Limpa quaisquer códigos que possam existir na lista

For I = LBound(Publicos.Linhas) To UBound(Publicos.Linhas)

Publicos.Linhas(I) = ""

Next I

'Altera o cursor para ampulheta

Application.Cursor = xlWait

'Limpa a lista

PosLista = -1

lstResultado.Clear

'Passa por todas as linhas para ver se encontra o Cliente

'Pára quando encontrar uma linha em branco

'Começa da linha 2 porque a primeira é o título

ContLinhas = 2

ClienteAtual = Range("B" & CStr(ContLinhas)).Text

While ClienteAtual <> ""

'Se encontrar um cliente de acordo com a pesquisa inclui na lista

'Coloca tudo em maiúsucla para evitar problemas com capslock

If UCase(ClienteAtual) Like ("*" & UCase(txtPesquisar.Text) & "*") Then

PosLista = PosLista + 1

lstResultado.AddItem ClienteAtual

Publicos.Linhas(PosLista) = ContLinhas

End If

'Verifica o próximo cliente

ContLinhas = ContLinhas + 1

ClienteAtual = Range("B" & CStr(ContLinhas)).Text

Wend

'Volta o cursor para o normal

Application.Cursor = xlDefault

'Se não der erro até aqui, sai da SUB

Exit Sub

Erro:

'Se der erro altera o cursor para padrão e mostra a mensagem de erro

MsgBox CStr(Err.Number) & " - " & Err.Description, , "Erro"

Application.Cursor = xlDefault

End Sub

Tente prosseguir com seu aplicativo a partir daí e, se tiver alguma dúvida é só chamar

Bráulio Figueiredo Pinto

braulio@braulioti.com.br

http://www.braulioti.com.br

Boa tarde Bráulio

Eu fiz todos os procedimentos que você ensinou, porém não funcionou aqui.

Fiz o seguinte:

-Criei um módulo com o nome Publico e coloquei o código nele: Public Linhas(1000) As String;

-Criei lblPesquisa, txtPesquisar, btnPesquisar e um lstResultado;

-Coloquei todo o código do botão Pesquisar conforme você orientou;

-Criei outro botão no formulário principal, para chamar o formulário de pesquisa.

Porém quando digito o nome do cliente na caixa de texto nada acontece.

Onde errei?

Pode me orientar novamente? se possível mande um pequeno exemplo já feito por você para eu adaptar aqui.

Agradeço eternamente.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia!

Fiz um modelo, você pode fazer o download através do link http://www.braulioti.com.br/documentos/pes...a_clientes.xlsm

Bráulio Figueiredo Pinto

braulio@braulioti.com.br

http://www.braulioti.com.br

Bom dia Bráulio,

Obrigado mais uma vez por essa ajuda.

O modelo enviado por você é exatamente o que eu preciso. Porém, gostaria de transferir o cliente pesquisado para o userform de cadastro, através de um botão de comando ou duplo clique no mesmo.

Ex.: Pesquiso o nome "Ana" e depois de aparecer na lista, dou duplo clique em cima dele ou clico no botão e abre o formulário de cadastro com todos os dados deste cliente. É possível?

Ótima semana para você.

Abraços!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...