Ir ao conteúdo
  • Cadastre-se

Excel - administrar banco de dados via userform


Posts recomendados

Bom dia pessoal;

 

Sou novato aqui, e fui muito bem indicado para participar deste fórum onde só tem mestres, estou com um problemão em uma planilha Excel com VBA,

Preciso montar um banco de dados via VBA, esta planilha contém as funções cadastro, Pesquisar, Excluir e Salvar, porém meu código para cadastrar não evita a repetição do número da solicitação, enquanto no botão salvar, preciso que salve as informações em uma pesquisa realizada sem que seja realizado um novo cadastro, só preciso realizar o complemento de informações  na pesquisa realizada.

A ideia da planilha é registrar a solicitação de compras, e posteriormente o almoxarifado acesse a planilha e adicione os dados de entrega dos produtos solicitados.

 

Estou encaminhando a planilha para que algum de vocês me ajudem.

Projeto Solicitação de Compras.xlsm

Link para o comentário
Compartilhar em outros sites

So pra deixar claro Controle de Estoque em Excel é um enorme erro mas da pra ser feito.

 

Minha sugestao seria apos gerar o pedido de compra você armazenar esse pedido em Excel, PDF apenas para registro do pedido e quando o material chegar você lança o material em outro formulario registrando apenas os itens que foram recebidos pelo almoxarifado. 

 

A programação é mais simples e o funcionamento melhor.

Link para o comentário
Compartilhar em outros sites

Mas isso você pode fazer via relatorios, ou seja o setor de compras realiza a compra e o almoxarifado da entrada no material comprado, e gera um relatorio do que recebeu e envia ao setor de compras, que verifica se tudo que foi comprado do forneceddor X no ultimo pedido foi entregue e da baixa no pedido de compra.

 

 

PS Excel em REDE (Parece ser essa a intenção), é um Grande erro, definitivamente excel nao foi feito pra uso em rede.

 

Dei uma olhada em sua planilha e vi que você colocou tudo em uma unica aba.
 

Os cadastros devem ser independentes separados assim

Cadastro de Produtos 

Cadastro de Fornecedores

Cadastro de Centro de Custos

 

E assim por diante.

Link para o comentário
Compartilhar em outros sites

Boa tarde, obrigado pela resposta, concordo com você realmente o Excel não deveria ser usado em rede, ao contrário da empresa que trabalho onde o Ofice é disponibilizado em rede, a principal intenção desta é que ao se cadastrar uma solicitação de compras, gere um Nº de registro para acompanhamento do processo que passa por diversas aprovações, isso costuma demorar e as vezes o produto chega no almoxarifado e o solicitante nem fica sabendo, por isso, preciso muito da ajuda de vocês e alterar o código para salvar alterações realizadas no banco de dados após ser pesquisado.

 

Desde já agradeço a ajuda de vocês.

Link para o comentário
Compartilhar em outros sites

Em 07/04/2016 às 11:38, Marcos Cavalis disse:

.. porém meu código para cadastrar não evita a repetição do número da solicitação, ...

 

 

1. exclua o código Private Sub Worksheet_Change do módulo da Plan1

2. insira o código abaixo no módulo do Form; esse código irá carregar na txtnumero um número sequencial ao ser carregado o Form

Private Sub UserForm_Initialize()
 txtnumero.Value = Application.Max(Sheets("Plan1").[A:A]) + 1
End Sub

3. insira as linhas abaixo no código Private Sub cmdCadastrar_Click

Private Sub cmdCadastrar_Click()
If Application.CountIf([A:A], txtnumero.Value) > 0 Then
 MsgBox "O numero da solicitação já existe", vbCritical, "Registro duplicado !"
 Exit Sub
End If

 

 

Em 07/04/2016 às 11:38, Marcos Cavalis disse:

 

... enquanto no botão salvar, preciso que salve as informações em uma pesquisa realizada sem que seja realizado um novo cadastro, só preciso realizar o complemento de informações  na pesquisa realizada.

 

 

Não entendi essa parte.

Atualmente o código vinculado ao botão "Salvar" está carregando dados da planilha no Form. Não deveria ser ao contrário?

O que você quer fazer? Seria colocar no Form um número de pedido, clicar no "Pesquisar" e carregar os dados daquele pedido no Form, depois editar alguns campos e em seguida clicar no botão "Salvar" para atualizar os dados do pedido?

 

Link para o comentário
Compartilhar em outros sites

 

2 horas atrás, Marcos Cavalis disse:

 

É isso mesmo, conforme seu comentário seria realizar uma pesquisa através do numero da solicitação e atualizar os dados através do botão salvar.

 

 

 

Ok, vamos ver essa parte.;)

 

Faltou você informar se com as alterações sugeridas no post #7 você obteve os resultados esperados...:confused:

Link para o comentário
Compartilhar em outros sites

2 horas atrás, osvaldomp disse:

 

 

Ok, vamos ver essa parte.;)

 

Faltou você informar se com as alterações sugeridas no post #7 você obteve os resultados esperados...:confused:

 

Ficou show de bola, infelizmente os registros estão salvando o número da solicitação na linha certa e o restante dos dados na linha abaixo, conforme figura que anexei.

001.JPG

Link para o comentário
Compartilhar em outros sites

11 horas atrás, Marcos Cavalis disse:

 

É isso mesmo, conforme seu comentário seria realizar uma pesquisa através do numero da solicitação e atualizar os dados através do botão salvar.

 

 

 

No código Private Sub CommandButton6_Click() 'Salvar substitua estas linhas

j = i
j = Cells.FindNext(after:=ActiveCell).Row
Cadastro.txtnumero.Value = .Cells(j, 1).Value
Cadastro.txtAlmDataEntrega.Value = .Cells(j, 20).Value
Cadastro.txtStatusComp.Value = .Cells(j, 23).Value
Cadastro.txtStatusParc.Value = .Cells(j, 25).Value
Cadastro.txtStatusFinal.Value = .Cells(j, 26).Value
Cadastro.txtStatusObs.Value = .Cells(j, 27).Value

 

por estas

.Cells(i, 2) = txtData.Value
.Cells(i, 3) = txtSolicitante.Value
.Cells(i, 4) = txtCentro.Value
.Cells(i, 5) = txtCodigo.Value
.Cells(i, 6) = txtDescricaoMaterial.Value
.Cells(i, 7) = txtMaterial.Value
.Cells(i, 8) = txtCodigosap.Value
.Cells(i, 9) = txtRazaoSocial.Value
.Cells(i, 10) = txtDataCotacao.Value
.Cells(i, 11) = txtNumeroReq.Value
.Cells(i, 12) = txtDataReq.Value
.Cells(i, 13) = txtDataAprovReq.Value
.Cells(i, 15) = txtNumeroPedCompras.Value
.Cells(i, 16) = txtDataPedCompras.Value
.Cells(i, 17) = txtDataApPedCompras.Value
.Cells(i, 19) = txtPrevEntPedCompras.Value
.Cells(i, 20) = txtProgramadoPedCompras.Value
.Cells(i, 21) = txtAlmDataEntrega.Value
.Cells(i, 25) = txtStatusComp.Value
.Cells(i, 26) = txtStatusParc.Value
.Cells(i, 27) = txtStatusFinal.Value
.Cells(i, 28) = txtStatusObs.Value

 

 

 

6 horas atrás, Marcos Cavalis disse:

 

Ficou show de bola, infelizmente os registros estão salvando o número da solicitação na linha certa e o restante dos dados na linha abaixo, conforme figura que anexei.

001.JPG

 

Testei no arquivo do link que você disponibilizou no post #1 e aqui não ocorre esse erro.

Você implementou as 3 sugestões do post #7 ?

 

 

 

 

Link para o comentário
Compartilhar em outros sites

13 minutos atrás, Marcos Cavalis disse:

... realizei sim as alterações conforme solicitado no post#7...

 

O arquivo que você postou por último não está com as 3 alterações sugeridas no post #7.

Por isso ocorre o erro de inserir em linhas diferentes ...:P

 

Veja também se as datas que são colocadas na planilha a partir das TextBox ficam no formato dd/mm/aa pois o Excel "tende" a colocar no formato americano mm/dd/aa...^_^

Link para o comentário
Compartilhar em outros sites

Bom dia OSVALDOMP;

Sou novato em VBA, realizei algumas alterações conforme solicitado no post #7, o problema persiste, e só falta isso, coloquei as imagens das alterações realizadas em anexo.

 

Pode ser a posição em que eu adicionei as linhas de código no evento CADASTRAR.

 

Desde já agradeço.

002.JPG

003.JPG

004.JPG

Link para o comentário
Compartilhar em outros sites

OSVALDOMP, muito obrigado por toda atenção, a planilha ficou show de bola, tinha certeza que conseguiria a solução do problema com vocês.

Espero que eu tenha muitas dificuldades nos novos projetos que estão engavetados para que possa ser compartilhado com todos.

Atenciosamente;

Marcos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 6 meses depois...

Olá à todos!

Estou com um problema parecido. Tenho uma planilha de Ocorrências de ponto aqui na empresa onde os funcionários se justificam, criei um userform onde ele me relata as ocorrências lendo da planilha "Resumo" os dados nome; setor; nº ocorrência dentre outros. Tenho que aprovar ou reprovar essa ocorrência no txtStatus jogando esse dado na mesma linha que o userform está lendo aparecendo aprovado ou aprovado na planilha "Resumo".

 

Fico no aguardo.

 

Grato à todos!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!