Notifications
Clear all

Controle de Baixas, envolve Datas e talvez Macros...

23 Posts
3 Usuários
0 Reactions
4,250 Visualizações
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Bom dia!

Pessoal, eu tenho uma planilha que utilizo para controlar quando um processo é arquivado na justiça.
Nesta data, eu verifico se já recebi ou não, e descarto toda documentação que eu tiver de tais processos arquivados.
Ela é mais complexa e com mais abas do que no exemplo, e você me ajudaram a montar algumas partes dela.


Agora eu estou querendo automatizar a aba "Baixas".

Eu aceito ideias, mas inicialmente, minha concepção é a que expliquei no próprio anexo...

Meu problema principal se centra em ocultar/reexibir linhas automaticamente por data.
(que foge do meu conhecimento)

Mais detalhes no próprio anexo.

Desde já, muito obrigado!

 
Postado : 17/09/2013 8:35 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente o código abaixo e diga se esta no caminho que deseja

Option Explicit

Private Sub Baixar()
'Declaração de variaveis
Dim pBase As Worksheet, pDest As Worksheet
Dim dInic As Date, dFinal As Date
Dim x As Long, y As Long
'Atribui os nomes das planilhas às variaveis
Set pBase = Sheets("Honorários")
Set pDest = Sheets("Baixas")
'Atribui as datas às variaveis
dInic = pDest.Range("C4").Value 'data da ultima baixa
dFinal = pDest.Range("C9").Value 'data da baixa atual
pDest.Range("A17:K10000").ClearContents
'Inicia loop para esconder as linhas anteriores a data inicial
y = 18
For x = 6 To Application.WorksheetFunction.Max(pBase.Range("B:B")) + 6
    If pBase.Range("Q" & x) <= dInic And pBase.Range("Q" & x) <> "" Then
        pBase.Rows(x).EntireRow.Hidden = True
    ElseIf pBase.Range("Q" & x) > dInic And pBase.Range("Q" & x) <= dFinal Then
        pDest.Range("B" & y) = pBase.Range("B" & x)
        pDest.Range("C" & y) = pBase.Range("C" & x)
        pDest.Range("D" & y) = pBase.Range("D" & x)
        pDest.Range("E" & y) = pBase.Range("E" & x)
        pDest.Range("F" & y) = pBase.Range("F" & x)
        pDest.Range("G" & y) = pBase.Range("G" & x)
        pDest.Range("H" & y) = pBase.Range("J" & x)
        pDest.Range("J" & y) = pBase.Range("Q" & x)
        pBase.Rows(x).EntireRow.Hidden = False
        y = y + 1
    Else
        pBase.Rows(x).EntireRow.Hidden = False
    End If
Next
End Sub
 
Postado : 26/09/2013 6:54 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

A menos que eu tenha feito errado, Reinaldo, não apareceu resultado...

Era só colar a macro em um módulo, correto?

Da uma olhada, por favor...

 
Postado : 26/09/2013 7:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Exatamente Pedro, adicione em um modulo, e execute,
Em seu exemplo (o disponibilizado acima e anteriormente) está especificado as datas 31/12/2010 (ultima baixa) e 31/5/2013 (Baixar até);
então "rodando" assim, nada acontece, pois essas datas não estão disponíveis na planilha Hono...
Mude para (por exemplo) Ultima baixa 30/087/2013 e baixar até 31/12/2013 (veja no anexo)

 
Postado : 26/09/2013 8:16 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Ah, ratiada minha, muito bom Reinaldo!

Ficou Show!

Agora vou mover estas duas abas pra planilha original, e da mesma forma, é só criar um módulo lá, colar o código e salvar com este forma *.xlsm, correto?

(Ou se, salvando só como *.xlsx funiona?)

MUITO OBRIGADO ATÉ AQUI!

 
Postado : 26/09/2013 8:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É necessário salvar em .xlsm (pasta de trabalho habilitada para macros)

 
Postado : 26/09/2013 9:06 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Reinaldo, só notei agora, depois de alguns testes...

Por gentileza, tu podes verificar pra mim?

Exemplo 1: com data 01/01/2013 não deveria mostrar nada.
Exemplo 2: utilizando como ultima data 05/09/2013, ele repete o ultimo processo duas vezes.

Não identifiquei nada no código que gerasse esse problema, pode ser que seja na planilha...

 
Postado : 27/09/2013 6:30 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Foi alterado o inicio da linha na sheet "Baixas", então as "limpeza" da consulta anterior não está correta
Altere:

pDest.Range("A17:K10000").ClearContents

Para:

pDest.Range("A12:K10000").ClearContents

Veja se está correto

 
Postado : 27/09/2013 7:50 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

PERFEITO!

Muito obrigado!

 
Postado : 27/09/2013 2:13 pm
Página 2 / 2