Notifications
Clear all

Tirar uma linha do filtro.

10 Posts
1 Usuários
0 Reactions
1,829 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia a todos.

Bom, tenho uma planilha em que os valores estão filtrados, mas na célula A47 tem uma fórmula pra calcular a quantidade de valores das células acima e o botão + pra adicionar mais uma linha antes dessa.

O problema é que criei botões de opção em que um classifica pela menor data e o outro pela mais vendida, aí a célula A47 vai lá pra cima, mas como é a da fórmula, tem que ficar embaixo.

Não sei se expliquei bem.

 
Postado : 22/03/2012 7:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

No caso do arquivo, deixe para a próxima!!

Veja se isso te ajuda mas, terá que adaptar

Sub ClickNamãozinha()
    Range("A10:E46").Select
    Selection.Sort Key1:=Range("E9"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
End Sub
 
Postado : 22/03/2012 7:58 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não conseguí adaptar, só resumindo.

Quero que a filtragem só afete as células antes da A47, já que quando filtro, a contagem que está na A47 vai pra cima.

Obrigado.

Clico na mãozinha sim. hehe

 
Postado : 22/03/2012 3:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Se observar na última linha da tabela, há fórmulas para contar os produtos, mas se eu classificar entre o da menor data e os mais vendidos, os valores da linha 47 vão pra cima e fica tudo errado, esses valores da linha 47 não podem ser alterados.

 
Postado : 23/03/2012 3:08 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!!

Tente assim
Substitua esses códigos pelo seu.

Sub maisvendido()
'
' maisvendido Macro
'
Application.ScreenUpdating = False
Range("A65536").End(xlUp).Select
    Selection.EntireRow.Insert
    
    Range("C9").Select
    ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C10:C46"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "Madeira,Cerâmica,Tecido,Couro,Bolsas", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    Range("B65536").End(xlUp).Offset(1).Select
    Selection.EntireRow.Delete
    
    Application.ScreenUpdating = True
End Sub

Sub data()
'
' data Macro
'
Application.ScreenUpdating = False
Range("A65536").End(xlUp).Select
    Selection.EntireRow.Insert
    Range("A9").Select
    ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A9:A46"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Dados").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    
    
    Range("B65536").End(xlUp).Offset(1).Select
    Selection.EntireRow.Delete
    Application.ScreenUpdating = True
End Sub
 
Postado : 23/03/2012 3:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Resolvi t mandar seu arquivo já adaptado!!
Baixe em:.
http://www.sendspace.com/file/6xdyax

Dê retorno
Lembre se...

viewtopic.php?f=9&t=3784
Att

 
Postado : 23/03/2012 3:47 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Me desculpem o pitaco, mas tentando contribuir.
Creio que o motivo para a linha do total estar sendo considerada, e por que ao criar o filtro, não foi definido a range, então o excel "pegou" o usedrange, e isso inclue a linha de total.
No local em que estou não tenho excel 2007/2010 para testar, mas simulando no 2003 (com o conversor), aparentemente funciona bem.
A proposta do Alexandre tambem e funcional, pois transfere o linha de total para baixo e depois a repoem (uma sacada bem interessante).
Outra possibilidade é criar o filtro no codigo, caso haja a possibilidade de alteração da range (inclusão ou exclusão de linhas).
Foi editado no 2003 mas deve funcionar nos acima tb

Sub Data()
Dim uLinha As Long
'Determina a ultima linha com dados em A, diminui 1 pois a ultima não entra no filtro
uLinha = Range("A" & Rows.Count).End(xlUp).Row - 1
    Range("A9:E" & uLinha).Select
    'limpa o auto filtro caso a range altere
    Selection.AutoFilter
    'Cria o auto filtro
    Selection.AutoFilter
    Selection.Sort Key1:=Range("A10"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Range("A9").Select
End Sub
 
Postado : 23/03/2012 3:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado, já agradeci na mãozinha em todos os posts.

Alexandre, você usou alguma macro ou editou alguma macro pra dar certo nisso ou usou sem vba mesmo? porque pelo que vi, não usou.

Se não usou, me diz o que tu fez ou onde foi que você fez essa alteração! Foi no código pra add a linha?

E por exemplo, se eu adicionar um produto, ele fica lá, mas se eu adicionar o outro, ele fica antes do último produto que cadastrei? Sabe como deixar ele embaixo? obr.

 
Postado : 24/03/2012 10:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Você testo o código postado pelo Reinaldo, creio ser bem melhor que o meu e acredito resolver.

Eu fiz isso
Inseri uma linha, ficando como ultima e vazia.

Range("A65536").End(xlUp).Select
    Selection.EntireRow.Insert

Depois retira a llinha.

Range("B65536").End(xlUp).Offset(1).Select
    Selection.EntireRow.Delete

Como sugestão você deveria arrumar uma maneira dessa "ultima linha com formula", ficar em outro lugar, quando fiz o pedaço da rotina, não imaginei que haveria de adicionar mais nada, a final você isso, teste o exemplo do Reinaldo, depois retorne.

 
Postado : 25/03/2012 5:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

A do Reinaldo ficou perfeita!

Vou pesquisar mais sobre esses códigos que ele utilizou pra ver se consigo.

 
Postado : 25/03/2012 12:29 pm