Notifications
Clear all

Ordem Alfabética No Combo

18 Posts
5 Usuários
0 Reactions
3,692 Visualizações
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Boa tarde a todos. Tenho um sistema em VBA bem simples, e o que eu queria é que quando abro ele (segue anexo) e digito novo, e no combo queria que ficasse em ordem alfabética as empresas. Ví alguns exemplos aqui no site, mas nenhum que funcionasse com o meu sistema.
OBS: Não sou muito bom com macros, sou aprendiz. Por isso peço essa grande ajuda a todos.

Usuário: wmendes
Senha: 872487

 
Postado : 16/01/2017 10:15 am
(@skulden)
Posts: 0
New Member
 

Basta colocar a tabela das empresas em ordem alfabética.

Abraços.

 
Postado : 16/01/2017 10:46 am
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Ola, boa tarde. Obrigado pelo seu contato, mas o que eu quero é que quando abro o formulário no Combo já me mostre em ordem alfabética, se você abrir o meu anexo, vai entender o que estou pedindo, pois a planilha onde está a relação não está visível, isso foi feito para quem usar o sistema não incluía dados diretamente na planilha e sim no formulário.

 
Postado : 16/01/2017 12:16 pm
(@skulden)
Posts: 0
New Member
 

Eu entendi o que você está pedindo, você que não está entendendo a solução proposta.

A partir do momento em que você coloca em ordem alfabética a tabela que está oculta (tem uma opção no filtro pra isso), os itens da combo também ficarão em ordem alfabética. Basta acrescentar um comando para ele filtrar a tabela em ordem alfabética toda vez que o usuário inserir uma nova empresa e excluir uma empresa da lista.

A planilha não precisa estar visível para você programar isso e após o usuário salvar, na próxima vez que ele abrir o form já vai estar em ordem alfabética porque no momento em que a planilha foi salva a tabela também estava em ordem alfabética.

Abraços.

 
Postado : 16/01/2017 12:36 pm
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Ok, como descrevi acima, sou aprendiz, você poderia me dar um exemplo de como faço isso.

 
Postado : 16/01/2017 12:58 pm
(@avgsantos)
Posts: 0
New Member
 

Boa noite, Crcj

Segue arquivo editado conforme solicitado, não precisa deixa a tabela das empresas em ordem alfabética, coloquei um código ordenar a combobox no combo empresa.

Grato
avgsantos

 
Postado : 16/01/2017 7:44 pm
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

avgsantos, bom dia.
Obrigado pela sua resposta, mas guando abro o sistema com usuário ( wmendes ) e a senha ( 872487) me da erro, segue anexo.

 
Postado : 17/01/2017 5:57 am
(@walter29)
Posts: 0
New Member
 

Olá CRCJ, bom dia!

A solução do nosso amigo AVGSantos foi simples e rápida. Inseri o código no Open do Workbook e chamei o formLogin depois que o código ajusta a tabela em ordem alfabética.


Private Sub Workbook_Open()

ActiveWorkbook.Worksheets("Empresa").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Empresa").AutoFilter.Sort.SortFields.Add Key:= _
        Range("B1:B60000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal

    With ActiveWorkbook.Worksheets("Empresa").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Plan7.Visible = False
Plan1.Visible = False

' Chama o formulário formLogin
frmLogin.Show

End Sub

 
Postado : 19/01/2017 12:47 am
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Walter29, bom dia.
Obrigado pela sua resposta, fiz algumas pequenas adaptações, e funcionou direitinho. Obrigado pela sua ajuda e até a proxima.

 
Postado : 19/01/2017 7:06 am
(@basole)
Posts: 487
Reputable Member
 

crcj, apesar do topico estar marcado como resolvido,
Fiz sugestão adaptando uma rotina que classifica a partir dos dados da planilha empresa, conforme os dados são cadastrados.

 
Postado : 19/01/2017 7:31 pm
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Basole, bom dia.
Obrigado pela sua ajuda, mas note que quando abro o sistema com usuário e senha me aparece o frmCadastroClientes clico no botão Fornecedor e me aparece o frmFornecedor, até ai tudo bem, gravo um novo fornecedor e ele me retorna automaticamente para o frmCadastroClientes, ai eu clico novo, e no combo não aparece em ordem alfabética:
Por EX: gravo no frmFornecedor a Empresa ( 1 ) CNPJ ( 11.111.111/1111-11 ), ai quando retorno no frmCadastroClientes e teclo novo, o fornecedor que gravei aparece em último lugar e na realidade deveria aparecer em primeiro lugar. Qual seria a solução ?

 
Postado : 20/01/2017 7:16 am
(@basole)
Posts: 487
Reputable Member
 

Neste caso, a solução é atualizar os dados, re_carregando o combobox!
Apos cadastrar um novo fornecedor, a macro re_carrega e classifica os dados antes de inserir no combobox:

 
Postado : 20/01/2017 9:20 am
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Basole,boa tarde.
Ok Funcionou direitinho usando números, mas quando cadastro alfa ele não funciona. Os números são exibidos na primeira linha, mas as letras estão no final, estamos quase conseguindo !!!!! Veja exemplo em anexo

 
Postado : 20/01/2017 12:01 pm
(@basole)
Posts: 487
Reputable Member
 

Amigo, a função que classifica, está correta, pois está ordenando pela sequencia natural dos codigos: simbolos, numeros, letras (maiuscula), letras (minuscula), etc

https://www.techonthenet.com/ascii/chart.php
! " # $ % & ' ( ) * + , - . /0 1 2 3 4 5 6 7 8 9 : ; < = > ?@ A B C D E F G H I J K L M N OP Q R S T U V W X Y Z [ ] ^ _` a b c d e f g h i j k l m n op q r s t u v w x y z { | } ~
No caso do seu exemplo, com letras minusculas (a), foram classificados pela sequencia natural.
Fiz, uns ajustes na função, para tratar tudo como maiúsculo, veja o anexo.

abç.

 
Postado : 20/01/2017 6:16 pm
 crcj
(@crcj)
Posts: 0
New Member
Topic starter
 

Basole, bom dia.
Show, funcionou corretamente !!!!!!, obrigado pela sua grande ajuda, e não abusando da sua boa vontade, como faço guando gravo um novo fornecedor o sistema verifica se já tem gravado esse fornecedor e me mostre uma mensagem " ESTE FORNECEDOR JÁ EXITE " e retorna para o mesmo formulário.

 
Postado : 23/01/2017 6:04 am
Página 1 / 2