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.
#58984
Bom dia, usuários e colaboradores do fórum.

Ainda não me aventurei no campo de filtragem automática do Excel e venho pedir a ajuda de vcs para realizar um modelo de filtro a partir de um range no formato de tabela.

Utilizei como modelo o filtro automático explicado no vídeo abaixo:
https://www.youtube.com/watch?v=TmSjIINBHqw

Mas como os dados estão dispostos em uma tabela o método de seleção do Range não funcionou. Tentei iniciar o filtro com a TextBox "Nome".

São cinco campos para Filtro:
- Data de cadastro (gostaria que ele inserisse as "/" no campo de filtro a medida que fossem sendo inseridos os caracteres numéricos)
- Nome
- CPF (gostaria que ele inserisse os "." e "-" no campo de filtro a medida que fossem sendo inseridos os caracteres numéricos)
- Data Nasc (gostaria que ele inserisse as "/" no campo de filtro a medida que fossem sendo inseridos os caracteres numéricos)
- Sexo (gostaria que fossem inseridos os parâmetros da Coluna [Sexo} da Tabela "TB_Config" para escolha no campo de filtro)

Assim como no exemplo do vídeo é desejado que o filtro funcione a medida que cada caractere seja inserido ou removido.

É desejado também que os filtros funcionem independentemente um do outro (para que funcione não precisa que o outro filtro esteja preenchido) e colaborativamente (a medida que um dos campos de filtro estiver preenchido que ele filtre a partir das informações já filtradas por algum outro campo de filtro se for o caso, ou seja, que a informação de cada filtro seja considerada)

Preciso que seja mantida a formatação das bordas da tabela a medida que a macro execute.

Segue a planilha para testes.

Obrigado a quem puder colaborar.
Você não está autorizado a ver ou baixar esse anexo.
#59020
Veja se ajuda. Note que seus CPFs estão cadastrados de 2 maneiras. Uma só com numero (sem ponto e traço) e outra com ponto e traço (como texto). Eu fiz o filtro somente com texto (com ponto e traço). Para funcionar tudo, precisaria mudar todos que estão como apenas numero para o formato de texto.

Caso queira tudo como número, avise que faço a adaptação.
Você não está autorizado a ver ou baixar esse anexo.
#59026
Bom dia, babdallas.

Os códigos já ajudaram bastante... muito obrigado novamente.
Note que seus CPFs estão cadastrados de 2 maneiras. Uma só com numero (sem ponto e traço) e outra com ponto e traço (como texto). Eu fiz o filtro somente com texto (com ponto e traço). Para funcionar tudo, precisaria mudar todos que estão como apenas numero para o formato de texto.
Como eu poderia contornar essa variável? Isso depende muito do operador. Alguns digitam somente números outros com "." e "-".
No código não é possível fazer com que ele filtre considerando apenas os números da combobox mesmo aparecendo os "." e "-"?
Outra maneira não sei como faria seria ao terminar de inserir os valores em uma determinada linha da tabela que ele "fixasse" (copiasse e colasse) os valores da coluna [CPF] ao terminar de digitar as informações da linha. Dessa forma mesmo o que for digitado somente com número seria convertido em texto.
O que acha?

Outra coisa que notei agora para os campo do Nome... tentei filtrar nomes com acento e ele não permite a digitação na combobox (Luís, por exemplo). Também não aceitou "ç". Tentei filtrar o nome "Conceição" que não havia na tabela de exemplo mas que coloquei para teste depois.

Mais uma vez obrigado pela grande ajuda.
#59029
Arrumei a questão dos acentos. Tinha esquecido.

Em relação ao CPF, sugiro que no código de inserção do CPF, você faça uma função em VBA que transforme o CPF tudo em número ou então colocando os pontos e traços. Mas é importante ter uma maneira única de inserção dos dados.
Você não está autorizado a ver ou baixar esse anexo.
#59030
Arrumei a questão dos acentos. Tinha esquecido.
Funcionou perfeitamente.
Em relação ao CPF, sugiro que no código de inserção do CPF, você faça uma função em VBA que transforme o CPF tudo em número ou então colocando os pontos e traços. Mas é importante ter uma maneira única de inserção dos dados.
O CPF é inserido manualmente no campo da tabela (por isso a variação do usuário em digitar ou não os "." e "-").
Não uso formulário para isso.
São digitados diretamente na tabela apenas com o formato personalizado "[<=99999999999]000\.000\.000-00;00\.000\.000\/0000-00"
Por isso comentei da alternativa de copiar e colar os valores para converter em texto.
Infelizmente tem essa possibilidade do usuário digitar com "." e "-" ou somente números.
Na Tabela preciso que apareçam com o formato ###.###.###-## para CPF e ##.###.###/####-## para CNPJ
O que vc sugere? Como seria a função para converter?

Vi que alterou o evento Workbook_Open()
Vi que estava dando um erro.
Tentei corrigir anteriormente carregando a combobox da seguinte maneira:
Código: Selecionar todos
Private Sub Workbook_Open()

    Dim Plan As Worksheet
    Dim Tabela As ListObject
    
    Set Plan = Wsh_CadPacientes
    Set Tabela = Plan.ListObjects("TB_Config")
    
    On Error Resume Next
    
    'Application.ScreenUpdating = False
    
    cbb_Sexo.List = Tabela.ListColumns("Sexo").DataBodyRange.Value
    
    'Application.ScreenUpdating = True
    
    Set Tabela = Nothing
    Set Plan = Nothing
    
End Sub
Porém não obtive sucesso. Qual o erro desse código?
#59031
Está parte consegui resolver:
Vi que alterou o evento Workbook_Open()
Vi que estava dando um erro.
Tentei corrigir anteriormente carregando a combobox da seguinte maneira:

Private Sub Workbook_Open()

Dim Plan As Worksheet
Dim Tabela As ListObject

Set Plan = Wsh_CadPacientes
Set Tabela = Plan.ListObjects("TB_Config")

On Error Resume Next

'Application.ScreenUpdating = False

cbb_Sexo.List = Tabela.ListColumns("Sexo").DataBodyRange.Value

'Application.ScreenUpdating = True

Set Tabela = Nothing
Set Plan = Nothing

End Sub
Porém não obtive sucesso. Qual o erro desse código?
Resovido com:
Código: Selecionar todos
Wsh_CadPacientes.cbb_Sexo.List = Tabela.ListColumns("Sexo").DataBodyRange.Value
#59033
Código: Selecionar todos
Private Sub Workbook_Open()
    Dim Plan As Worksheet
    Dim Tabela As ListObject
   
    Set Plan = Wsh_CadPacientes
    Set Tabela = Plan.ListObjects("TB_Config")
    
    With Wsh_CadPacientes.cbb_Sexo
        .Clear
        .List = Tabela.ListColumns("Sexo").DataBodyRange.Value2
   
        '.AddItem "Masculino"
        '.AddItem "Feminino"
    End With
    
    Set Tabela = Nothing
    Set Plan = Nothing
End Sub

Em relação ao CPF e CNPJ, eu adicionaria com os pontos, traços e barras necessárias ao invés de deixar tudo como número. O problema de deixar tudo como número é que quando tem zero à esquerda, o Excel não armazena os zeros. Assim, na hora de procurar, o filtro não vai encontrar os zeros à esquerda e não trará o resultado correto.
Eu coloquei uma validação de dados com uma fórmula que valida o formato, somente deixando inserir com ponto, traço e barra nos lugares corretos. Além disso, inserir uma coluna de Pessoa Física ou Jurídica para facilitar a validação de dados.
Você não está autorizado a ver ou baixar esse anexo.
#59086
Entendido...

Vou continuar pensando em alguma outra alternativa para essa questão.

E através de uma macro? é possível converter os valores da coluna [CPF] em texto?
Daí sempre antes de utilizar o Filtro pelo campo CPF ele rodaria essa macro e converteria tudo no formato ###.###.###-## ou ##.###.###/####-##.

Poderia pensar em rodar essa macro sempre que ele rodasse o filtro pelo campo CPF ou sempre antes de fechar a planilha
por exemplo...

Seria possível assim?
#59088
Sim, é possível, mas é muito mais fácil você limitar na inserção dos dados do que depois. É trabalho a mais à toa.
Outra forma é criar um pequeno formulário com macro para inserir o CPF da forma que vc deseja, como fizemos para fazer a procura.
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