Notifications
Clear all

Macro filtrar dados da semana de segunda a domingo

11 Posts
2 Usuários
0 Reactions
1,577 Visualizações
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Boa tarde pessoal. Preciso de uma macro que filtre em uma lista de serviços por data. Tenho esta macro abaixo, porém a mesma filtra todas as datas desta semana, só que são serviços que tenho que fazer na semana atual e essa macro pega entre domingo e sábado desta semana. Eu preciso que pegue entre segunda e domingo da semana que eu estiver, senão os serviços que vencerem no domingo só aparecerão na próxima semana. Alguém pode me ajudar?

Sub Macro1()
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$49").AutoFilter Field:=1, Criteria1:= _
        xlFilterThisWeek, Operator:=xlFilterDynamic
End Sub
 
Postado : 27/04/2015 9:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Seria bom que postasse seu arquivo modelo compactado contendo dados fictícios para que possamos ajuda-lo.

Att

 
Postado : 27/04/2015 10:15 am
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Boa tarde Alexandre. Anexo o arquivo exemplo. Nele tem uma macro que faz o processo que preciso, porém ela filtra de Domingo a Sabado e eu preciso que o filtro seja feito de Segunda a Domingo. Obrigado.

 
Postado : 28/04/2015 9:42 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu não sei se eu entendi, mas tente isso

Sub AleVBA_15573()
    Worksheets("Plan2").Columns("A:M").EntireColumn.Delete
    With Worksheets("Plan1").Range("$A$1:$B$10000")
        .Columns("D:M").EntireColumn.Delete
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:=xlFilterThisWeek, Operator:=xlFilterDynamic
        .SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Worksheets("Plan2").Range("a1")
        .AutoFilter
        Worksheets("Plan2").Range("$A$1:$B$10000").Copy Destination:=Worksheets("Plan1").Range("D1")
    End With
    
End Sub

Como estamos usando filtro, para retornar os dados para a mesma guia, eu usei uma guia axiliar.

Att

 
Postado : 28/04/2015 11:22 am
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Deixa eu te explicar melhor. Estes são serviços que tenho que executar e não posso deixa-los atrasar. Preciso de uma macro que filtre os as linhas que vencem esta semana para que possa fazer. Preciso que a macro filtre de segunda a domingo da semana atual. Ou poderia ser também, filtrar os que vencem no dia atual e as que vencem nos próximos 7 dias. Obrigado.

 
Postado : 28/04/2015 4:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Então simule (faça de forma manual), os resultados onde tem datas misturadas (datas com datas antigas e atuais), depois cole o resultado das datas atuais na coluna D.
Poste o resultado no fórum!

Att

 
Postado : 28/04/2015 7:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Deixa eu te explicar melhor. Estes são serviços que tenho que executar e não posso deixa-los atrasar. Preciso de uma macro que filtre os as linhas que vencem esta semana para que possa fazer. Preciso que a macro filtre de segunda a domingo da semana atual. Ou poderia ser também, filtrar os que vencem no dia atual e as que vencem nos próximos 7 dias. Obrigado.

Teria outras maneiras de fazer, mas aproveitei um modelo tirado do site, http://boisgontierjacques.free.fr/pages ... reAuto.htm, e fiz uma adaptação, entendendo que o ideal seria você fornecer as Datas Inicial e Final, neste modelo é aberto um formulário com um calendário iniciando a semana na Segunda, é só selecionar as datas inicial e final e terá seu filtro, fica mais fácil uma vez que terá sempre as semanas.
Veja se ajuda.

Filtrar entre duas datas

Qualquer duvida retorne.

[]s

 
Postado : 28/04/2015 11:27 pm
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Boa tarde Mauro, o arquivo que você postou me ajudou um pouco. Não precisava ser tão elaborado e no que preciso a data deve ser automática (o filtro será feito com os serviços que vencem no dia e até sete dias depois do dia atual).Fiz umas alterações para meu modelo para a forma que preciso, porém acho que tá faltando algo, por que o filtro funciona pela metade, ou seja a data inicial está filtrando em 30/12/1900, acho que algum erro de formatação. Veja o código abaixo e o arquivo em anexo.

Sub Filtrar()

    Dim DATAA As String
    Dim DATAB As String
    Dim HOJE As Date
    Dim HOJEMAISSETEDIAS As Date
        
    HOJE = Range("j1").Value
    HOJEMAISSETEDIAS = Range("l1").Value
    
    DATAA = ">=" & Format(CDate(HOJE), "dd/mm/yyyy")
    DATAB = "<=" & Format(CDate(HOJEMAISSETEDIAS), "dd/mm/yyyy")
 
    [f1] = DATAA
    [g1] = DATAB
   
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$168").AutoFilter Field:=1, Criteria1:=DATAA, Operator:=xlAnd, Criteria2:=DATAB

End Sub
 
Postado : 29/04/2015 3:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Minha contribuição.
Experimente utilizar a rotina assim

Sub Filtrar()

    Dim DATAA As String
    Dim DATAB As String

    DATAA = ">=" & Format(CDate(Sheets("CalendrierForm2dates").Range("I1").Value), "yyyy/mm/dd")
    DATAB = "<=" & Format(CDate(Sheets("CalendrierForm2dates").Range("l1").Value), "yyyy/mm/dd")
 
  
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$168").AutoFilter Field:=1, Criteria1:=DATAA, Operator:=xlAnd, Criteria2:=DATAB

End Sub
 
Postado : 30/04/2015 7:12 am
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Obrigado Reinaldo, era exatamente o que eu precisava. Obrigado também ao Alexandre e Mauro pela colaboração.

 
Postado : 04/05/2015 9:19 am
(@engeel2014)
Posts: 207
Reputable Member
Topic starter
 

Obrigado Reinaldo, era exatamente o que eu precisava. Obrigado também ao Alexandre e Mauro pela colaboração.

 
Postado : 04/05/2015 9:22 am