Página 1 de 1

Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 20 Jul 2021 às 14:19
por Inovacao
Pessoal, boa tarde!!

É possível rodar um VBA para que eu consiga Classificar na coluna B= VENCIMENTO do mais recente para o mais antigo para o mais recente e vice versa, sendo que as colunas L, M E N estão bloqueadas.

Segue Planilha para quem quiser me ajudar, pode usar senha 123.

Obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 21 Jul 2021 às 17:18
por mucascosta
Veja se é isso:
Código: Selecionar todos
Sub Asc()
    Range("B13").Sort Key1:=Range("B14"), _
    Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom
End Sub

Sub Desc()
    Range("B13").Sort Key1:=Range("B14"), _
    Order1:=xlDescending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom
End Sub

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 21 Jul 2021 às 17:27
por Inovacao
Boa tarde, mucascosta!!

Não deu certo, não sei se fiz da forma errada, passo a passo.

ALT+F11, INSERIR/ MÓDULO, JOGUEI O CÓDIGO, mas quando fui na plan e bloqueiei com senha 123, e quando fui classificar disse que estava protegido.

preciso que ela deixe o usuário classificar mesmo com ela bloqueada.

Obrigado.

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 21 Jul 2021 às 17:48
por mucascosta

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 21 Jul 2021 às 19:54
por Inovacao
Não funciona, já tentei de inúmeras formas, basta bloquear que ela não permite classificar.

Por isso pedi ajuda para especialistas em VBA, pode criar uma macro e depois editar colocando código proteger e desproteger planilha.

Obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 22 Jul 2021 às 09:44
por mucascosta
Código: Selecionar todos
Sub Asc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

    Range("B13").Sort Key1:=Range("B14"), _
    Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub Desc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

    Range("B13").Sort Key1:=Range("B14"), _
    Order1:=xlDescending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub ProtectSheet()
Dim Password 'Esta linha de código é opcional
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Protect Password, True, True, True
End Sub

Sub UnProtectSheet()
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Unprotect Password
End Sub

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 22 Jul 2021 às 10:18
por Inovacao
Bom dia meu caro!!

Colei o código e nada aconteceu, porque sera?

Segue Planilha.

Obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 22 Jul 2021 às 11:32
por mucascosta
Aqui tá funcionando...

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 22 Jul 2021 às 12:08
por Inovacao
Agora sim meu caro, ficou show, perfeito!!


Muitissimoooooooo, obrigadoooooooooooooo!!


Valeu!!!!!!!!!!!!!!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 24 Jul 2021 às 12:42
por Inovacao
Boa tarde!!

Eu copiei o mesmo código e os botões para outra Planilha que tem as mesmas colunas.

Ele funcionou na planilha nova porem ele abre a antiga em segundo plano, ou seja ao clicar no botão ele funciona na nova mas abre a antiga em segundo plano, então como faço para que ele funciona somente na nova?

Aonde neste código ele se referencia ao nome da Planilha antiga para eu poder trocar o nome da planilha antiga pelo nome da planilha nova.

Sub Asc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

Range("B13").Sort Key1:=Range("B14"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub Desc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

Range("B13").Sort Key1:=Range("B14"), _
Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub ProtectSheet()
Dim Password
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Protect Password, True, True, True
End Sub

Sub UnProtectSheet()
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Unprotect Password
End Sub


Muito obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 26 Jul 2021 às 15:44
por Inovacao
mucascosta escreveu: 22 Jul 2021 às 11:32 Aqui tá funcionando...
Boa tarde, mucascosta!!

Por favor pode me auxiliar na questão abaixo:
Eu copiei o mesmo código e os botões para outra Planilha que tem as mesmas colunas.

Ele funcionou na planilha nova porem ele abre a antiga em segundo plano, ou seja ao clicar no botão ele funciona na nova mas abre a antiga em segundo plano, então como faço para que ele funciona somente na nova?

Aonde neste código ele se referencia ao nome da Planilha antiga para eu poder trocar o nome da planilha antiga pelo nome da planilha nova.

Sub Asc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

Range("B13").Sort Key1:=Range("B14"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub Desc()
'Coloca a chamada no inicio da sua rotina para que desproteja a sua Planilha
Call UnProtectSheet

Range("B13").Sort Key1:=Range("B14"), _
Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

'Coloca a chamada no fim da sua rotina para que proteja novamente a sua Planilha
Call ProtectSheet
End Sub

Sub ProtectSheet()
Dim Password
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Protect Password, True, True, True
End Sub

Sub UnProtectSheet()
Password = "123" 'Informe a senha da sua Planilha
ActiveSheet.Unprotect Password
End Sub


Muito obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 27 Jul 2021 às 16:28
por mucascosta
Se vc copiou e colou os botões, sem mudar a atribuição de macros, ficaram vinculados a macros da planilha de origem...
Se foi isso, Click a direita dos botões, um de cada vez, -> Atribuir macros -> Macros em: escolher a planilha ativa -> selecionar Asc ou Desc -> OK

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 28 Jul 2021 às 08:59
por Inovacao
Bom diaaaaaaaaaa!!

Fechou, era isso mesmo!!

Muito obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 11 Ago 2021 às 14:20
por Inovacao
Bom dia, mucascosta!!
Tudo bem?

To precisando de uma ajudinha referente a Planilha, pode me ajudar?

Quando aciono o botão para CLASSIFICAR POR CRESCENTE OU DECRESCENTE, ele funciona direitinho.
Porem ao travar a Planilha ele desabilita o filtro das colunas e fico sem poder classificar de A a Z etc..

Tem como resolver isto?

Obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 11 Ago 2021 às 17:49
por mucascosta
Trava por qual razão?

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 11 Ago 2021 às 18:07
por Inovacao
Boa noite, mucascosta!!

Tenho que travar pois mais pessoas utilizam tambem a Planilha e são todos leigos que já me deram dor de cabeça quebrando minhas fórmulas.

Seria ideal que ao travar ele liberasse algumas opções por padrão, dentre elas filtrar e classificar.
Segue foto das opções:
Imagem
Imagem

Obrigado!!

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 12 Ago 2021 às 09:28
por mucascosta
Ah! sim, Travar é igual a Proteger...

Na solução que lhe enviei, no início das macros Asc e Desc Desprotege e no fim Protege...

Então não há necessidade de proteger novamente...

Re: Classificar coluna de data do mais recente para o mais antigo com VBA

Enviado: 12 Ago 2021 às 10:25
por Inovacao
Bom dia, mucascosta!!

Sim no final ela protege!!

Porem depois que ela protege, quando eu clico em qualquer coluna o filtro não funciona, pois a opção de classificar esta desabilitada.

Segue foto do que eu precisava fazer depois que ela protege.
Faz o teste por favor, clica nos botões e depois tenta usar o filtro de qualquer coluna, tenta classificar.
Imagem

Obrigado!!