Notifications
Clear all

Codigo em botão pra ordenar dados. S.O.S 😛

17 Posts
2 Usuários
0 Reactions
2,767 Visualizações
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Gente,

S.O.S :shock:

Possuo um botão adicionado encima da celula S5, e gostaria programa-lo com uma rotina para ordenar os dados na tabela, porem ordenar a partir da coluna H, onde é apresentado o titulo "Estaca". Gostaria também que ela funcionasse ordenando também os dados quando aplicado filtros para refinar os dados, por exemplo:
Filtrar a coluna "G"(Lado) para "Esquerdo" e depois acionar o botão para ordenar os dados filtrados.

Exemplo Sem filtro e sem acionar o botão para ordenar: :ugeek:
Lado Estaca

Direito 1821
Esquerdo 2020
Direito 2109
Direito 1125
Esquerdo 1125

Exemplo Com filtro e acionado o botão para ordenar: :mrgreen:

Lado Estaca

Esquerdo 1125
Esquerdo 2020

Segue em anexo a planilha. :roll:

 
Postado : 30/04/2014 2:02 pm
(@themrl16)
Posts: 60
Trusted Member
 

Boa tarde Márcio!

Segue em anexo o arquivo modificado. Por favor, verifique se a macro que eu criei auxilia você neste caso.
Observe que ela classifica os dados duas vezes (Uma na coluna "Estaca" do maior para menor, e na sequência classifica o Lado do Maior para o Menor).

Abraços,

Murilo.

 
Postado : 30/04/2014 2:13 pm
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

É exatamente oque eu preciso. Obrigado mesmo :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

Esqueci de dizer que precisava também, que apos utilizar o filtro no "Lado" e ordenar as "Estacas", que seja inserida uma formatação condicional, onde sera preenchido em vermelho a estaca da coluna H, sempre que ela for < (Menor) a Estaca acima na coluna J.

Tipo essa sintaxe:

SE H8 < J7 = FORMATAR CÉLULA H8 EM VERMELHO.

Consegui no menu formatação condicional do Excel fazer esta gambiarra, porem ao filtrar e ordenar os valores, ele mantem o vinculo com as células antes desordenadas. a formatação condicional não entende que os valores estão posicionados em lugares diferentes.

É possivel de alguma maneira resolver meu problema ? :shock: :roll: :? :( :o

 
Postado : 30/04/2014 4:49 pm
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Nada ?

 
Postado : 06/05/2014 7:35 am
(@themrl16)
Posts: 60
Trusted Member
 

Bom dia Márcio!

Desculpa a demora para responder. Estive ausente do fórum nos últimos dias em viagem e seu tópico acabou ficando para trás. Agora que vc respondeu eu pude ver que o assunto ficou pendente.
Por favor, verifique o anexo que está nessa planilha. Eu criei uma formatação condicional que atende o seu caso, e será reaplicada sempre que a planilha for filtrada/ordenada (como a formatação é deletada do intervalo na coluna H, não haverá vínculos anteriores).

Pode ser que a fórmula que eu criei não seja a mesma que você precisa. Se for esse o caso, basta alterar a Sub Formatacao e informar a fórmula na propriedade Formula1:="xxx"
Se vc desejar uma cor diferente, altere a propriedade .Color e informe o valor numérico que represente a cor desejada (no caso da vermelha que foi aplicada, é a 255... se vc tiver dúvidas na cor, basta criar uma macro com o assistente automático mudando para a cor desejada, e o respectivo código será gerado).

Abraços e à disposição para quaisquer necessidades de modificar seu arquivo,

Murilo.

 
Postado : 06/05/2014 8:43 am
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Cara,

era isso que eu precisava, marcar em vermelho quando o valor for menor for menor do que o ultimo da coluna acima. a sintaxe esta certa. Porem quando clico no botão ordenar, ele esta formatando células vazias. tente abrir a planilha e acionar o botão de ordenar pra vc entender :roll:

Ele esta achando que o valor ainda esta naquela célula vazia e formata ela ? :?:

 
Postado : 06/05/2014 11:06 am
(@themrl16)
Posts: 60
Trusted Member
 

Eu fiz o teste alterando os valores, aplicando filtro, incluindo linhas... mas a formatação aparentemente está correta, e a macro não está formatando em vermelho células vazias (fica igual ao que está na imagem abaixo).

Vc chegou a baixar o anexo da última mensagem que eu enviei? Disponibilizei ele novamente nesta mensagem, por favor utilize o filtro dele e caso suas células em branco estejam formatadas disponibilize o arquivo salvo dessa forma para que eu possa analisar.

PS: Eu observei que o filtro não está com range dinâmico (se eu incluo mais linhas, ele não está ordenando as mesmas. Eu corrigi essa condição no anexo dessa mensagem)

Segue abaixo o código utilizado, caso não consiga baixar o novo arquivo:

Sub Ordenar()
Dim iLastRow As Long

    iLastRow = ActiveSheet.UsedRange.Rows.Count 'Conta número de linhas preenchidas na Aba em aberto

    With ActiveWorkbook.Worksheets("Memória").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("H7:H" & iLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("J7:J" & iLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A7:Q" & iLastRow)
        .Header = xlGuess
        .Orientation = xlTopToBottom
        .Apply
    End With
    
    Call Formatacao 'Chama o método que reaplica a formatação condicional
End Sub


Sub Formatacao()

With Range("H8:H999") 'Invervalo que será formatado
    .FormatConditions.Delete 'Remove a formatação condicional anterior
    
    'Reaplicando a formatação:
    '-----------------------------------------------------------------------------
    'Fórmula da formatação: =E($H8<>"";$H8<$J7)
    .FormatConditions.Add Type:=xlExpression, Formula1:= _
           "=E($H8<>"""";$H8<$J7)"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = 255
        .StopIfTrue = True
    End With
    '-----------------------------------------------------------------------------
End With

End Sub

Obrigado!

Abraços,

Murilo.

 
Postado : 06/05/2014 11:46 am
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Tenta abrir a planilha, e voce vai ver que esta em vermelho a ultima validação, por isso ele pinta a celula de vermelho.
Depois tenta clicar no botão ordenar estacas, sem utilizar nenhum filtro.
Voce vai ver que ele manda a celula formatada de vermelho lá pra baixo, em uma celula vazia.
Entendeu ? :(

Obs: Coloquei um exemplo com valores simples em "decimal" pra simplificar, porem na planilha com os valores maiores o problema acontece do mesmo jeito. :|

 
Postado : 07/05/2014 5:27 am
(@themrl16)
Posts: 60
Trusted Member
 

Bom dia Márcio!

Eu fiz conforme vc citou. Cliquei no botão Ordenar por Estaca Inicial e ele inverteu as células como deveria (a que estava com a estava inicial 7 subiu e a 8 desceu). Como 8 era menor que a estaca final anterior (9), ele pintou a célula de vermelho.
Porém, não consegui identificar células vazias que continuam em branco (pelo menos no meu Excel ele realizou a formatação após o click normalmente). Poderia verificar se o arquivo no anexo desta mensagem procede como deveria?

Se o seu arquivo não está dessa forma (ele formata células vazias em vermelho), por favor, disponibilize um novo arquivo que esteja dessa forma.

Obrigado!

Murilo.

 
Postado : 07/05/2014 6:17 am
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Da uma olhada no video que eu te mandei e voce vai me entender. :roll:

https://www.youtube.com/watch?v=ykpVw3x ... e=youtu.be

 
Postado : 07/05/2014 8:44 am
(@themrl16)
Posts: 60
Trusted Member
 

Hmm é muito estranho, eu faço exatamente a mesma coisa e as células vazias não ficam formatadas dessa forma. Fiz até um teste em máquina virtual com o e não ficou dessa forma...
Por favor, é possível vc verificar em Formatação Condicional -> Gerenciar Regras se a fórmula =E($H8<>"";$H8<$J7) ou o intervalo de aplicação =$H$8:$H$999 é alterado após clicar no botão de Ordenar? O correto é ele manter todas as células que possuem a formatação dessa forma, mas gostaria de saber se após vc rodar a macro seu Excel está mudando a fórmula ou o intervalo, pois aparentemente é a única explicação.

@Vou bolar uma forma de criar toda a formatação através de macro (sem a utilização da formatação condicional) e em breve posto a solução para você em um novo post.

Abraços,

Murilo.

 
Postado : 07/05/2014 10:18 am
(@themrl16)
Posts: 60
Trusted Member
 

Márcio!

Por favor, verifique o novo arquivo anexado nesta mensagem.

Observe que eu modifiquei toda a Sub Formatacao, que agora formata linhas da coluna H validando linha a linha e considerando se ela está vazia ou não, evitando que o problema apresentado anteriormente ocorra.
Ela é ativada sempre que uma célula for alterada na aba Memória através do evento Worksheet_Change e também quando o usuário clicar no botão de ordenar.

Caso seja necessário realizar novas modificações, por favor nos informe.

Abraços,

Murilo.

 
Postado : 07/05/2014 10:47 am
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Não deu pra entender o erro que esta ocorrendo ?
O Excel manda a formatação pra uma celula vazia mais pra baixo, e posteriormente quando altero os valores na lista, ele não formata mais.

 
Postado : 08/05/2014 12:10 pm
(@themrl16)
Posts: 60
Trusted Member
 

Boa tarde Márcio!

Desculpe a pergunta mas vc chegou a verificar o último anexo que eu enviei?. Por favor, verifique o arquivo que enviei no penúltimo post meu no tópico, às 13:47... como ele não cria fórmulas de formatação condicional e avalia células vazias, ele deve atender o seu caso.
Disponibilizei o anexo do arquivo novamente neste post também.

 
Postado : 08/05/2014 12:15 pm
(@marciojr)
Posts: 146
Estimable Member
Topic starter
 

Desculpe-me, pois não notei que o tópico tinha criado a pagina 2 e achei que não tivesse me respondido, :lol:
Enfim,

Agora ele esta formatando somente as células preenchidas direitinho, porem quando utilizo um filtro para mostrar apenas as linhas referentes ao Lado "Esquerdo", veja que ele não atualiza a Rotina de Formatação Condicional e mantem a célula H11 em vermelho.

Talvez nem seja possível fazer uma validação utilizando filtros de visualização. Talvez seja possível somente com outro botão com uma macro para ordenação por "Lado" e logo em seguida ordenar os números.

Oque voce sugere, se for necessario outro botão, poderia cria-lo pra mim ? :o
Agradeço desde já a sua atenção :ugeek:

 
Postado : 09/05/2014 5:09 am
Página 1 / 2