Ir ao conteúdo
  • Cadastre-se

Excel Filtro de pesquisa listbox e transferência de dados


Ir à solução Resolvido por LaerteB,

Posts recomendados

Boa noite! Gostaria de saber se alguém sabe criar algum de pesquisa no combobox usando critério no opption button para no mínimo duas variáveis para determinar a pesquisa  (o exemplo está na minha planilha anexa).

 

A segunda situação é queria criar uma listbox  que permita a transferência de dados para uma segunda listbox, e que após que permita fazer a transferência dos dados selecionados para uma segunda guia onde os dados selecionados ficaram armazenados (por exemplo da guia1 para a guia2). Vou deixar abaixo um vídeo exemplo junto com a planilha usada por ele. No vídeo ele usa listview, mas queria fazer com listbox com multiselect no lugar da checkbox para determinar as linhas que devem ser transferidas.

A minha planilha já esta um pouco configurados, mas não consigo concluir os comandos (EM ANEXO)

 

@LaerteB

 

link para o download da planilha do vídeo abaixo: 

https://www.dropbox.com/s/rhvtyxys4jvavjr/Atualizar registros Listview.xlsb?dl=0

 

 

 

 

 

 

 

minha planilha.zip

Link para o comentário
Compartilhar em outros sites

Boa noite, josequali

 

Como informei anteriormente no outro Tópico, estou anexando um arquivo exemplo da primeira situação..

Agora a segunda vou ver somente amanhã 😀.

 

Verifique se  soluciona a 1ª situação...

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" 😄

 

LaerteB 🙂

Combobox OptionButton - Solucao 3 LB- 03-08-20.zip

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

@LaerteB Dei uma atualizada na planilha e adicionei o comando para transferir os dados, mas está dando erro no listitems.

Deixei os dados comentados ('). 

Modelo de planilha LB atualizada 04.08.2020.zip

adicionado 40 minutos depois
39 minutos atrás, josequali disse:

@LaerteB Dei uma atualizada na planilha e adicionei o comando para transferir os dados, mas está dando erro no listitems.

Deixei os dados comentados ('). 

Modelo de planilha LB atualizada 04.08.2020.zip 30 kB · 0 downloads

outra duvida como definir a primeira linha como cabecario ? ou para que ela não aparece.

Link para o comentário
Compartilhar em outros sites

Boa noite, josequali

 

No arquivo exemplo em anexo contém a solução para a 2ª situação, com a transferência da

seleção dos itens da listbox1 para a listbox2, e também o transporte dos dados da listbox2

para a "guia2" como tu informou na primeira mensagem deste Tópico 😉.

 

Já está colocado o cabeçalho na listbox2 como solicitou..

 

Por gentileza verificar se era isso mesmo que pediu.

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" 😄

 

LaerteB 🙂

Modelo de planilha LB Solucao 1.2 - 05.08.2020.zip

Link para o comentário
Compartilhar em outros sites

@LaerteB Bom dia! Fiz o teste direto na minha planilha oficial, no entanto, nela infelizmente não consigo usar esse modelo, tive um problema. Quando deixo habilitado a opção multiselect no listbox, ela para de carregar os dados do listbox nos combobox (por que no meu modelo de planilha tem um botão que serve para carregar os dados do listbox no combobox para alterar dados de cadastro quando necessário). Logo, infelizmente terei que usar transferindo do listbox1 mesmo para a guia 2 diretamente, e excluindo da guia 1 os itens que foram transferidos para guia2. Terei que transferir os dados individualmente já que não poderei selecionar mais que um ao mesmo tempo (multiselect). Você conseguiria adaptar? Desde já agradeço a pela grande/enorme/imensa ajuda.Não tem noção como estou grato por ter alguém me ajudando, já que sou leigo em excel avançado. Muito obrigado mesmo.

Link para o comentário
Compartilhar em outros sites

obs: a linha do cabecario ainda continua aparecendo, então ela acaba sendo contada como linha, e acaba interferindo no meu Código de registro. Veja a imagem abaixo.

imagem.png

adicionado 7 minutos depois

Então acho melhor ela não aparecer dentro da listbox para não ser contabilizada. Eu faço manualmente em caixa de texto para indicar a coluna.

Link para o comentário
Compartilhar em outros sites

Bom dia, josequali

 

Para eu poder ver o que está acontecendo, terá que me passar um arquivo exemplo, pois
sem isso fica somente no "chutômetro" e não tenho os dados para saber onde estão os
problemas...

 

Desta forma faz o seguinte, pega o ultimo arquivo exemplo que te enviei e crie o modelo
que se encontra no seu projeto (somente o que está dando esses problemas) com os códigos
reais do seu projeto - anexando-o aqui.. assim poderei verificar o seu caso, pois o modelo
do seu projeto que inicialmente me mandou não "funcionava" e dava erro no userform que
continha os listbox...

 

Aguardando sua resposta, o seu arquivo exemplo e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"😁

 

LaerteB 🙂

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

@LaerteB Boa noite! Consegui resolver os bugs na planilha. No entanto, no modelo que você enviou os códigos estão muito bons, o problema é porque após a transferência dos dados da guia 1 para guia 2, os da guia 1 que foram selecionados para transferência deveriam ser excluídos após a conclusão. Só queria adicionar um código para excluir os dados após a transferência .

 

Agora fugindo um pouco da situação acima, caso possa criei duas situações de transferência de dados.

 

Primeira situação: queria transferir os dados diretamente da listbox1 (item selecionado) para guia 2 da planilha, sendo que após a transferência os dado da guia 1 que foi selecionado deve ser excluído.

 

Segunda situação: queria transferir os dados utilizando o critério do status. Caso o status seja "Concluída" queria que todos os itens da listebox1 após o comando do botão de transferir, os dados sejam enviados da guia 1 para guia 2, sendo que os dados da guia 1 que foram selecionados devem ser excluídos após a transferência.

 

Segue em anexo os dois modelos de situação.

 

Obrigado!    :D

 

 

 

situação 1.zip situação 2.zip

Link para o comentário
Compartilhar em outros sites

Boa noite, josequali

 

Amigo desculpe a demora, sabe como é... estou enviando para ti o anexo com todas

as soluções que solicitou 🙃..

 

Legal que resolveu seus bugs 👍... agora vamos a alguns adendos; primeiro que

inseri em um único arquivo exemplo com os dois Botões da 1ª e 2ª situações que mencionou

na mensagem acima... segundo tive que criar uma coluna "F" para acomodar códigos

numéricos (para facilitar as "coisas" 😉).. e uma dica de "brinde" 😆 tente não usar

mesclagem entre células, pode até ser mais "bonito" e "prático", mas para o VBA é

uma "tortura"; utilize em células/colunas que não serão usadas para o VBA 😉..

 

Por gentileza verifique se tudo está de acordo com o que queria 😃...

 

Qualquer coisa estamos aqui para ajudá-lo...

 

Aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" 🙂

 

LaerteB 😁

Modelo Solucao LB Situacao 1 e 2 - 06-08-2020.zip

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

@LaerteB Era bem isso que eu precisava! ficou incrível! muito obrigado cara!  :D

 

Atualmente adaptei um comando para enviar mensagem de e-mail no outlook pelo excel utilizando a mensagem da combobox1 para para um e-mail especifico e consegui. Queria tentar fazer o mesmo processo, só que com whatsapp. Comecei, mas me perdi nos códigos.

O objetivo é enviar a mensagem, mas não para um contato especifico e sim para um grupo do whatsapp na empresa em que trabalho (qualidade), para que possam receber uma notificação quando um novo processo for aberto. No caso o comando deve fazer um loop para achar o nome do grupo do whatsapp especificado.

 

A mensagem enviada deve ser a seguinte.

 

"Prezados, uma nova solicitação de análise de soja do" & combobox1 & " foi solicitada em nosso sistema. Por favor, verificar!"

 

Ou seja a mensagem da combobox deve ficar entre essa mensagem padrão, assim como faço na do e-mail (que esta em anexo no modelo do userform que estou encaminhando). Poderia me ajudar? Desde já agradeço. Muito obrigado!   :D

 

 

whatsapp.zip

Link para o comentário
Compartilhar em outros sites

@LaerteB @LaerteB Boa noite! Realizei os testes, no entanto, da um erro no código do transferir dados - exportar (nome do botão)

 

Na parte de: Private Sub txtvalidar_Click()

Após o código: ActiveCell.Offset(0, 9).Value = ListBox1.List(y, 9)

da erro a partir do (0, 10) até o (0,15).

 

Já na parte do: Sub RemoveItensGuia1Status()  

está dando error no código: Selection.SpecialCells(xlCellTypeBlanks).Select 

 

Fiz uma planilha resumida para tentar a correção nela, para que eu possa também estudar depois e comparar com a outra que você encaminhou e entender melhor o código.

 

A senha para a opção alterar e excluir dados é: 123.

 

Outra duvida é: existe algum código vba para atualizar a planilha depois que transferir os dados da listbox1, porque só atualiza depois que eu fecho o vba e abro novamente, rs.  E se tem como colocar o código referente a soma do número de registro para ficar abaixo da list box. Tentei alguns tutoriais, mas da error porque os modelos que encontro é para soma de valores referentes a dados como número total de despesas, gastos, pagamento de salários e etc. Vide exemplo abaixo. Desde já agradeço pela disponibilidade e atenção. :D Estarei encaminhado o anexo do projeto resumido. :) 

 

 

EXPORTAR DADOS PROJETO.zip

Link para o comentário
Compartilhar em outros sites

Bom dia, josequali

 

Vamos em partes Ok...

 

Primeiro o arquivo que anexou dá erro (como no primeiro que tinha enviado), provavelmente deve ter
alguma ligação "externa", conexão ou outro problema, então não tenho como entrar no seu
userform principal...

 

Segundo em relação aos erros, quais são??? você não "printou" os erros para que eu possa analisá-los,
desta forma fica complicado; sem esses erros mencionados aqui, posso somente "supor" e no "chutômetro"
dar algum "palpite" sobre...

 

1º no

Private Sub txtvalidar_Click() 

não tenho como saber o que está ocorrendo (por gentileza criar um arquivo exemplo "sem conexão externa",

mas com os códigos e toda a organização das sheets, não precisa colocar todo o seu projeto,

somente a parte que está dando o erro) e verifique que com este arquivo novo ocorre o mesmo erro,

senão está dando conflito com algum outro código (se for isso de mais detalhes, colocando até imagens se necessário

e quais botões ou manipulação que executou para ocasionar o erro)...

 

2º em relação ao

Sub RemoveItensGuiaStatus()

fica difícil sem ter o motivo do erro (que tu tens que printar e colocar aqui para eu analisar) posso somente

tentar "adivinhar", verifique se o

 

Application.Goto Reference:="dadoservilha

 está com o nome correto referente a sua tabela e se a tabela engloba todas as colunas e linhas que estão com os dados,
pois se não tiverem todos dentro da tabela, se o comando ou o nome estiver incorreto
(mesmo com uma letra ou se tiver um espaço pode dar o erro)

Selection.SpecialCells(xlCellTypeBlanks).Select

não funcionará, pois este comando ele seleciona (na tabela) os espaços em branco...


3º em relação a sua dúvida de atualizar o ListBox é só tu comentar ou excluir esses dois comandos
abaixo:

 OptionButton9.Enabled = False
 OptionButton10.Enabled = False

que se encontram dentro dos botões:

Private Sub CommandButton2_Click()

Private Sub CommandButton3_Click()

que são do arquivo exemplo "Modelo Solucao LB Situacao 1 e 2 - 06-08-2020"; desta forma como estão
ativados os botões de opções é só clicar em um dos dois que atualizará a Listbox com o conteúdo
novo...

 

4º agora para o número de registro tu podes colar este trecho do código abaixo (altere conforme
o seu projeto):

UserForm1.Label3.Object = Planilha2.Cells(Rows.Count, 1).End(xlUp).Row - 1 _
& " Registro(s) Encontrado(s)."

dentro do

Sub filtrar()

e dos botões

Private Sub CommandButton2_Click()

Private Sub CommandButton3_Click()

isso no arquivo exemplo "Modelo Solucao LB Situacao 1 e 2 - 06-08-2020" (coloque no seu projeto
de acordo com os botões e do filtro que estiver nele).

 

Por gentileza verifique tudo que te informei acima e teste os comandos 😃

 

Estou aguardando sua resposta, o arquivo exemplo, seus prints e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha" 🙂

 

LaerteB 😁

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

@LaerteB Bom dia! Consegui aplicar o comando para atualização da listbox1 e contagem das linhas. Na contagem de linhas ele ele esta contando junto com o cabecario, contabilizando 14 registros, mas só exitem 13 (vide imagem abaixo). Como corrigir esse erro de contagem?

Já na transferência de dados, realizei as mudanças mas além de continuar dando não transfere todas informações e nem deleta as transferidas . Removi todos os links externos da planilha e estou a encaminhado só a parte do projeto que importa, o restante removi tudo.

Outra duvida é: deixei propositalmente o comando de cadastrar também na segunda guia para ver se conseguia cadastra na guia 1 os dados, mas para minha surpresa, os dados acabam indo para a guia 2 mesmo. Existe algum comando para complementar o comando de salvar para escolher a a guia para salvar? Tentei usando worksheet mas não deu certo.

 

Desde já agradeço pela ajuda! :D Obrigado!  :)

 

 

numero registros.png

EXPORTAR DADOS PROJETO.zip

Link para o comentário
Compartilhar em outros sites

Boa tarde, josequali

 

Olha já corrigi tudo o que foi solicitado, se faltou alguma coisa me fale em outro post 🤔... em anexo o arquivo exemplo com todas as correções e funcionando 🤨...

 

Agora vamos as informações pertinentes...

Percebi que tu não queres mostrar todas as colunas na Listbox (somente as três primeiras), mas

tem que colocar todas as colunas nos códigos (arrumei para ti, pois no Listbox para conseguir mais 

de 10 colunas é necessário esses códigos que inseri), abaixo o código que não estava

correto e logo em seguida o que alterei para corrigir:

Sub filtrar()
'Me.ListBox1.ColumnWidths = "30; 130; 50"
'
'For i = 3 To lin
'
'    With ListBox1
'     .AddItem
'     .List(0, 0) = "ID"
'     .List(0, 1) = "PROCEDENCIA"
'     .List(0, 2) = "STATUS"
'
'
'    End With
'
'With ListBox1
'
' .AddItem
'    .List(linbox, 0) = Planilha9.Cells(i, 1)
'    .List(linbox, 1) = Planilha9.Cells(i, 2)
'    .List(linbox, 2) = Planilha9.Cells(i, 3)
'
'   linbox = linbox + 1
'
'End With
'
'Next i

e agora o que corrigi e alterei para que funcionasse com mais de 10 colunas na Listbox:

Sub filtrar()
Dim c As Range, a() As String, n As Long, i As Long

Me.ListBox1.ColumnWidths = "30; 130; 50; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2"


ListBox1.ColumnCount = 15

    With Planilha9
        Set Rng = .Range("A2", .Range("A2").End(xlDown))
       
        Me.ListBox1.Clear
       
        For Each c In Rng
            n = n + 1: ReDim Preserve a(1 To 15, 1 To n)
            For i = 1 To 15
                a(i, n) = c.Offset(, i - 1).Value
            Next
        Next
    End With
   
'Preenche o Listbox
If n > 0 Then Me.ListBox1.Column = a

Set Rng = Nothing

Para transferir os dados para a Sheet(2) tive que acrescentar as colunas 4 até a 15 nas referencias dos

botões de opções ID, Procedência e Status e alterar para o formato "hora" a coluna 15, conforme abaixo:

Private Sub TextBox1_Change()
    .List(linbox, 14) = VBA.Format(Planilha9.Cells(lin, 15).Value, "hh:mm:ss")

As outras alterações que executei foram essas das imagens mais abaixo (todas com explicações) 😉.

 

Espero que seja isto que queria, por gentileza verificar e testar no seu projeto :D .

 

Qualquer coisa estamos aqui para ajudar..

 

Estou aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"

 

LaerteB :)

 

Img 001.jpg

Img 002.jpg

Img 003.jpg

Img 004.jpg

EXPORTAR DADOS PROJETO - Solucao 1 LB - 09-08-2020.zip

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

@LaerteB Bom dia! O código funcionou perfeitamente. Era o que eu esperava! muito obrigado! Queria tirar uma duvida.

Quando eu realizo o cadastro e coloco o nome do responsável em aberto o campo do "Status" fica em "Aberto", e essa informação é salva na planilha assim como eu desejava. Entretanto, quando eu seleciono o nome do responsável e vou em "Alterar" a informação é salva no painel, mas gostaria que essa informação também fosse alterada na planilha e o nome "Aberto" muda-se para "Fechado". Acredito que tenho que acrescentar o comando no comando de "Alterar", tentei a mesma especificação do botão "Salvar", mas ela acaba mudando só da linha C3 e não da que eu desejo ao da um click. Então não funcionou. Veja as imagens abaixo. Desde já agradeço a disponibilidade. Obrigado! :) 

 

If Opt12 = True Then
Planilha9.Range("c3").Value = "Fechado"
End If

 

 

imagem 1.png

imagem2.png

EXPORTAR DADOS PROJETO.zip

Link para o comentário
Compartilhar em outros sites

@LaerteB Consegui Resolver! Era só colocar Range("C" & Linha).Value = "Fechado"

:) 

Uma dúvida queria transferir a informação carregada do userform1 (form_inconformidades) para o userform2 (form_alerta) nas combobox procedendia e motivo. Existe algum comando que permite? Desde já agradeço pela ajuda.

 

 

 

 

 

EXPORTAR DADOS PROJETO.zip

Link para o comentário
Compartilhar em outros sites

Boa tarde, josequali

 

Legal que conseguiu resolver a sua outra dúvida 😉...

 

Agora em relação a esta última mensagem, já criei a solução no arquivo exemplo em anexo 😃..

 

Verifique e veja se era isso que queria 🙃 .

 

OBS: não esqueça de dar o seu Feed Back no outro Tópico, é muito importante a sua resposta 😃.

 

Estou aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"

 

LaerteB 🙂

Exemplo 4.1 Solucao 1 LB - 11-08-2020.zip

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

@LaerteB Perfeito :) Muito obrigado!

adicionado 19 minutos depois

@LaerteB Boa noite! gostaria de saber como fazer para evitar a transferência da primeira linha contendo os dados (a linha 3). Porquê caso eu transfira tudo o meu ID irá começar do número 1 novamente, prejudicando assim que eu tenha um número único por registro. Sendo assim, independente do status estar Fechado na linha 3, queria que está não seja transferida para não prejudicar a continuação do meu ID. O projeto é o mesmo do post anterior. Segue abaixo as imagens.

 

 

imagem 1.png

imagem2.png

Link para o comentário
Compartilhar em outros sites

  • Solução

Boa noite, josequali

 

Para você ter um "contador numérico" sem se preocupar em excluir linhas e perder esses "ID"

já registrados, tem que utilizar esses códigos abaixo.

 

Para o Botão "Novo":

Private Sub btncadastro_Click()

Incluir um trecho de código, conforme abaixo:

 Dim cont As Long

 cont = Sheets("bancodedadosocorrencia").Range("AB2").Value + 1
 Sheets("bancodedadosocorrencia").Range("AB2").Value = cont

Me.Txtid.Value = Range("AB2").Value 'OBS: para adicionar ao ID um valor toda vez que fizer um novo registro (o valor esta na celula b1)

Observe que foi alterado o Range de "B1" para "AB2", você pode deixar como Range no "B1", mas terá que excluir a fórmula dentro desta célula.

 

E para o Botão "Salvar":

Private Sub btnOK_Click()

Incluir este trecho de código abaixo:

Txtid.Value = Range("AB2").Value 

Alterando neste caso também somente a Range de "B1" por "AB2", se quiser deixar o "B1" faça o que lhe informei

nas linhas acima..

 

Agora mesmo que excluir tudo dentro da Tabela a contagem sempre seguirá a última linha salva - exemplo se for 15 a

próxima será 16, mesmo que todos os dados das linhas forem excluídos, como tinha solicitado.

 

Porém para continuar a partir da última linha já registrada no seu projeto, coloque manualmente na célula "AB2" ou se

for continuar com a célula "B1" (lembre de excluir neste caso a fórmula desta célula) o último "ID" já cadastrado,

como no arquivo exemplo coloque o número "15"..

 

Espero que seja isso que estava querendo..

 

Estou aguardando sua resposta e seu Feed Back ... se foi útil, não esqueça de clicar na "mãozinha"

 

LaerteB😀

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...