Página 1 de 1

Completar macro

Enviado: 04 Mar 2017 às 19:38
por nmareis
Boa noite pessoal existe alguma forma de colocar esta macro a perguntar a data que pretendo filtrar?
Código: Selecionar todos
Sub Macro1()
'
' Macro1 Macro
'

'
    Windows("Livro 3.xlsx").Activate
    ActiveSheet.Range("$B$1:$R$6").AutoFilter Field:=13, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "3/1/2017")
    Windows("Livro 2.xlsx").Activate
    Range("L17").Select
    ActiveSheet.Range("$B$1:$R$6").AutoFilter Field:=13, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "3/1/2017")
    Windows("Livro 1.xlsx").Activate
    ActiveSheet.Range("$B$1:$R$12").AutoFilter Field:=13, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "3/1/2017")
    Range("H20").Select
    Windows("Livro Final.xlsm").Activate
End Sub
Obrigado

Re: ajuda a completar macro

Enviado: 04 Mar 2017 às 20:01
por alexandrevba
Boa noite!!

Use uma InputBox
Código: Selecionar todos
Dim sData As String 

sData = InputBox("Digite sua data") 
Att

ajuda a completar macro

Enviado: 04 Mar 2017 às 20:11
por nmareis
e já gora como ficava o código?...obrigado..pretendo colocar a data apenas uma vez...depois ele filtra em todos os livros automaticamente...obrigado

Re: Completar macro

Enviado: 05 Mar 2017 às 20:29
por alexandrevba
Boa noite!!

Favor ler as regras do fórum!!
viewtopic.php?f=5&t=4
Regra nº 11:
Nós preferimos que os membros não façam postagens cruzadas (quando a mesma postagem é feita em diferentes fóruns). Mas quando isso ocorrer, os membros devem deixar claro os links para as postagens cruzadas.

Favor indicar as postagens cruzadas!
http://www.planilhando.com.br/forum/vie ... 10&t=23813

Att

Re: Completar macro

Enviado: 06 Mar 2017 às 11:38
por nmareis
alexandrevba escreveu:Boa noite!!

Favor ler as regras do fórum!!
viewtopic.php?f=5&t=4
Regra nº 11:
Nós preferimos que os membros não façam postagens cruzadas (quando a mesma postagem é feita em diferentes fóruns). Mas quando isso ocorrer, os membros devem deixar claro os links para as postagens cruzadas.

Favor indicar as postagens cruzadas!
http://www.planilhando.com.br/forum/vie ... 10&t=23813

Att
desculpe não sabia que também pertencia ao outro forum!...apenas o fiz porque estou mesmo a precisar de conseguir a macro com o máximo de brevidade...preciso que a macro filtre nas folhas e depois copie para a folha final( como me fez anteriormente ), mas com o pedido de data a filtrar e depois copiar para a folha final apenas o que foi filtrado. os ficheiros são os mesmos que disponibilizei anteriormente...mas volto a adicionar.
Muito obrigado e mais uma vez a minhas desculpas.

Re: Completar macro

Enviado: 06 Mar 2017 às 12:29
por alexandrevba
Boa tarde!!

Vejo se você abriu um tópico similar ao outro (eu vou trancar o outro tópico).
preciso que a macro filtre nas folhas e depois copie para a folha fina
Qual o critério, qual data que o código tem que saber para filtrar os dados?

Att

Re: Completar macro

Enviado: 06 Mar 2017 às 15:34
por nmareis
alexandrevba escreveu:Boa tarde!!

Vejo se você abriu um tópico similar ao outro (eu vou trancar o outro tópico).
preciso que a macro filtre nas folhas e depois copie para a folha fina
Qual o critério, qual data que o código tem que saber para filtrar os dados?

Att
a data é definida por mim quando clico na macro...ela pergunta qual a data e eu coloco a data depois a macro vai nos livros e filtra o que está nessa data em todos os livros e depois copia para a folha final...ou seja...a data é sempre a definir por mim...clico e a macro pergunta " qual a data a seleccionar" e eu coloco a que eu quiser e depois são filtradas todas as linhas com informação referente a essas datas e são selecionadas,copiadas e coladas na folha final..tudo seguido..em baixo depois da tabela..

Obrigado

Re: Completar macro

Enviado: 06 Mar 2017 às 21:27
por alexandrevba
Boa noite!!

Abra e descompacte o arquivo, rode a macro.

Att

Completar macro

Enviado: 07 Mar 2017 às 07:09
por nmareis
bom dia é quase isto mesmo..agora pedia-lhe se não dá para configurar a macro de forma a que após fazer o filtro e quando estiver a seleccionar assim que encontrar uma linha em branco(marquei a azul nos livros), pare de seleccionar...para não copiar a linha de baixo onde diz: expediente/concelho/etc..e para não copiar aquele valor total..tipo a macro filtra..começa a seleccionar...assim que encontra uma linha branca, não selecciona mais(isto é para todos os livros), e então copia para a folha final....vou lhe enviar as folhas de novo..fiz lá um ajuste na macro para ver o que realmente pretendo..está quase no ponto! brigadão!!

Re: Completar macro

Enviado: 07 Mar 2017 às 10:07
por alexandrevba
Bom dia!!

Eu não consigo te entender, a sua solicitação de agora e do primeiro post, não faz tanta diferença.
assim que encontrar uma linha em branco(marquei a azul nos livros),
No anexo não vi na marcado de azul.
fiz lá um ajuste na macro para ver
O anexo não veio com código.

Vai uma outra forma de fazer a mesma coisa que pediu.
Código: Selecionar todos
Sub AleVBA_4207V2()
'Onde está escrito o nome -> AleVBA <-, altere para a guia que desejar
'Onde está escrito o nome -> Ficheiro Ramais a Executar<-, altere para a guia que desejar
    Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook
    Dim Rws As Long, Rng As Range
    Set Wb = ThisWorkbook

    MyDir = "C:\Users\alexandre.goncalves\Downloads\Guru\"
    MyFile = Dir(MyDir & "*.xlsx")
    ChDir MyDir
    Application.ScreenUpdating = 0
    Application.DisplayAlerts = 0

    Do While MyFile <> ""
        Workbooks.Open (MyFile)
        With Worksheets("Ficheiro Ramais a Executar")
            Rws = .Cells(Rows.Count, "A").End(xlUp).Row
            Set Rng = Range(.Cells(2, 1), .Cells(Rws, 18))
            Rng.Copy Wb.Worksheets("AleVBA").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            ActiveWorkbook.Close True
        End With
        MyFile = Dir()
    Loop
    'A linha abaixo foi comentada, apenas deleta a coluna A
    'Worksheets("AleVBA").Range("A:A").Delete
End Sub
Att

Completar macro

Enviado: 07 Mar 2017 às 11:42
por nmareis
Viva é quase isto, mas não está a perguntar a data a filtrar...obrigado

Completar macro

Enviado: 07 Mar 2017 às 14:21
por nmareis
viva já consegui resolver..diga-me e se o ficheiro final estiver numa pasta diferente dos outros ficheiros?...como posso fazer?...obrigado

Re: Completar macro

Enviado: 08 Mar 2017 às 06:07
por nmareis
nmareis escreveu:viva já consegui resolver..diga-me e se o ficheiro final estiver numa pasta diferente dos outros ficheiros?...como posso fazer?...obrigado
bom dia,

estive a verificar e este código é mais rápido que o último que me enviou...pedia-lhe por favor para colocar este a não copiar a parte de baixo como fez anteriormente no outro...só até á linha em branco, sem o total e a parte que diz expediente..etc..
Código: Selecionar todos
Sub Reis()
    Dim sFolder As String
    Dim sFile As String
    Dim wbD As Workbook, wbS As Workbook
     
    Application.ScreenUpdating = False
    Set wbS = ThisWorkbook
    sFolder = wbS.Path & "\"
     
    sFile = Dir(sFolder)
    Do While sFile <> ""
         
        If sFile <> wbS.Name Then
            Set wbD = Workbooks.Open(sFolder & sFile)
            wbD.Sheets("Ficheiro Ramais a Executar").Range("A2:R10000").Copy
            wbS.Activate
            Sheets("Folha2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
            wbD.Close savechanges:=True
        End If
        sFile = Dir
    Loop
    Call AleVBA_Deletar
    Application.ScreenUpdating = True
End Sub
Sub AleVBA_Deletar()
Dim sEntrada As String
Dim lData As Long

sEntrada = Application.InputBox("Digite a data no formato ""DD/mm/aaaa""")
lData = CLng(DateValue(sEntrada))

Worksheets("Folha2").Range("A1").AutoFilter Field:=14, Criteria1:=">=" & lData, Operator:=xlAnd, Criteria2:="<" & lData + 1
    Dim lRows As Long
    'Application.Calculation = xlCalculationManual
        For lRows = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
            If Cells(lRows, 1).EntireRow.Hidden = True Then Cells(lRows, 1).EntireRow.Delete
        Next lRows
        ActiveSheet.AutoFilterMode = False
    'Application.Calculation = xlCalculationAutomatic

End Sub

obrigado

Re: Completar macro

Enviado: 08 Mar 2017 às 08:25
por alexandrevba
Bomdia!!

Altere essa linha.
Código: Selecionar todos
Set Rng = Range(.Cells(2, 1), .Cells(Rws, 18))
Para...
Código: Selecionar todos
Set Rng = Range(.Cells(2, 2), .Cells(Rws, 18))


Att

Re: Completar macro

Enviado: 08 Mar 2017 às 09:13
por nmareis
alexandrevba escreveu:Bomdia!!

Altere essa linha.
Código: Selecionar todos
Set Rng = Range(.Cells(2, 1), .Cells(Rws, 18))
Para...
Código: Selecionar todos
Set Rng = Range(.Cells(2, 2), .Cells(Rws, 18))


Att
viva...neste código não tem essa linha?????
Código: Selecionar todos
Sub Reis()
    Dim sFolder As String
    Dim sFile As String
    Dim wbD As Workbook, wbS As Workbook
     
    Application.ScreenUpdating = False
    Set wbS = ThisWorkbook
    sFolder = wbS.Path & "\"
     
    sFile = Dir(sFolder)
    Do While sFile <> ""
         
        If sFile <> wbS.Name Then
            Set wbD = Workbooks.Open(sFolder & sFile)
            wbD.Sheets("Ficheiro Ramais a Executar").Range("A2:R5000").Copy
            wbS.Activate
            Sheets("Preenchimento").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
            wbD.Close savechanges:=True
        End If
        sFile = Dir
    Loop
    Call AleVBA_Deletar
    Application.ScreenUpdating = True
End Sub
Sub AleVBA_Deletar()
Dim sEntrada As String
Dim lData As Long

sEntrada = Application.InputBox("Digite a data no formato ""DD/mm/aaaa""")
lData = CLng(DateValue(sEntrada))

Worksheets("Preenchimento").Range("A1").AutoFilter Field:=14, Criteria1:=">=" & lData, Operator:=xlAnd, Criteria2:="<" & lData + 1
    Dim lRows As Long
    'Application.Calculation = xlCalculationManual
        For lRows = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
            If Cells(lRows, 1).EntireRow.Hidden = True Then Cells(lRows, 1).EntireRow.Delete
        Next lRows
        ActiveSheet.AutoFilterMode = False
    'Application.Calculation = xlCalculationAutomatic

End Sub
é este que pretendo que pare na linha bazia em baixo e não copie o total e os textos expediente, etc..como fez no anterior código..este:
Código: Selecionar todos
Sub AleVBA_4207V2()
'Onde está escrito o nome -> AleVBA <-, altere para a guia que desejar
'Onde está escrito o nome -> Ficheiro Ramais a Executar<-, altere para a guia que desejar
    Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook
    Dim Rws As Long, Rng As Range
    Set Wb = ThisWorkbook

    MyDir = "C:\cme\Fic. Partilhados\Ramais\"
    MyFile = Dir(MyDir & "*.xlsx")
    ChDir MyDir
    Application.ScreenUpdating = 0
    Application.DisplayAlerts = 0

    Do While MyFile <> ""
        Workbooks.Open (MyFile)
        With Worksheets("Ficheiro Ramais a Executar")
            Rws = .Cells(Rows.Count, "A").End(xlUp).Row
            Set Rng = Range(.Cells(2, 1), .Cells(Rws, 18))
            Rng.Copy Wb.Worksheets("Preenchimento").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            ActiveWorkbook.Close True
        End With
        MyFile = Dir()
    Loop
    Call AleVBA_Deletar
    Application.ScreenUpdating = True
End Sub


Sub AleVBA_Deletar()
Dim sEntrada As String
Dim lData As Long

sEntrada = Application.InputBox("Digite a data no formato ""DD/mm/aaaa""")
lData = CLng(DateValue(sEntrada))

Worksheets("Preenchimento").Range("A1").AutoFilter Field:=14, Criteria1:=">=" & lData, Operator:=xlAnd, Criteria2:="<" & lData + 1
    Dim lRows As Long
    'Application.Calculation = xlCalculationManual
        For lRows = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
            If Cells(lRows, 1).EntireRow.Hidden = True Then Cells(lRows, 1).EntireRow.Delete
        Next lRows
        ActiveSheet.AutoFilterMode = False
    'Application.Calculation = xlCalculationAutomatic

End Sub
..se houver possibilidade de agilizar melhor agradeço..assim poderá ficar mais rápido