Notifications
Clear all

Ocultar linhas (sem poder usar filtro)

10 Posts
2 Usuários
0 Likes
2,452 Visualizações
(@mauricio-0)
Posts: 16
Active Member
Topic starter
 

Prezados,

Preciso emitir um relatório de uma folha de pagamento.
O programa emite um relatório em excel, mas o relatório tem uma aparência meio ilegível.

Não sei muito das coisas, mas consegui "dar um jeitinho" pra melhorar as coisas.
A cada etapa me surgia um novo problema, então acabei criando 6 macros diferentes.
Pra minha surpresa, se eles forem executados em ordem, ficam bem como eu queria.

Contudo, eu gostaria de uma macro número 7 - e me perdoem se estiver sendo ignorante.
Eu gostaria de uma macro que OCULTASSE (sem apagar, se não da erro em tudo) as linhas amarelas (imagem 01 anexa - ).
Não tenho idéia de como poderia fazer isso.

Como não posso alterar a ordem das linhas, não posso usar filtro. Acredito que entenderão melhor esse ponto quando abrirem a tabela.
Claro que se alguém conseguir usando filtro também me serve, mas acho que vai desconfigurar os dados.

SOBRE A PLANILHA ANEXA ( )
1) Estou anexando um arquivo com 2 funcionários, mas serão 30 funcionários ao todo.
Então se forem fazer alguma referência a quantidade de linhas, precisa ser entre a linha 01 e a linha 800 (ocupo até -+ a linha 550 com a folha toda, indo até 800 eu teria uma margem ainda).

2) Se abrirem a planilha e forem clicando nos macros na ordem, vão chegar ao resultado idêntico ao da imagem, mas as linhas não estarão grifadas de amarelo.

De coração, espero que alguma boa alma possa dar uma idéia, ainda de como fazer.

Obs.: Aceito macros enjambradas, tipo criar uma nova coluna e fazer o que for... o que importa é que eu consiga imprimir de uma maneira mais fácil de visualizar.

Obs.2: Ainda é meio protótipo, então ainda terei que ajustar uma ou outra coisa. A própria listagem de funcionários vai precisar fazer parte da fórmula, então ainda não fiz tudo já que não sei se conseguirei chegar onde pretendo.

 
Postado : 14/09/2017 9:31 am
joebsb
(@joebsb)
Posts: 44
Eminent Member
 

Se fosse fazer manualmente, você poderia excluir a linha toda? Ou apenas da coluna "D" em diante?

Caso seja a linha toda, excluindo as linhas não vai prejudicar as suas fórmulas?

Caso seja da coluna "D" em diante, vc precisaria deslocar as células para a esquerda ou para cima?

Espero ter ajudado.

Se ficou como vc queria... não esqueça de marcar essa mensagem como tópico resolvido e mandar um TKS.

Abraços

 
Postado : 14/09/2017 9:39 am
joebsb
(@joebsb)
Posts: 44
Eminent Member
 

Grande Maurício....

Se puder excluir a linha toda... como falei... vc pode usar o código abaixo... (Salve uma cópia da planilha então antes de testar se for preciso)

Basta criar uma nova macro com esse código e depois executar ela ok?

Sub AjudaMauricio()
'Macro criada por Joe em 14/09/2017
'Contato para freelancer: (61) 99136-3695

    For i = 1 To 800
        If ActiveSheet.Cells(i, 5).Interior.Color <> vbWhite Then
            ActiveSheet.Rows(i).Delete
            i = i - 1
        End If
    Next
End Sub

Espero ter ajudado galera.

Se ficou como vc queria... não esqueça de colocar o tópico como resolvido e mandar um TKS.

Abraços

Espero ter ajudado.

Se ficou como vc queria... não esqueça de marcar essa mensagem como tópico resolvido e mandar um TKS.

Abraços

 
Postado : 14/09/2017 9:54 am
(@mauricio-0)
Posts: 16
Active Member
Topic starter
 

joebsb

Amigo, eu primeiramente havia colocado para apagar as linhas.
Mas notei que eu estragaria tudo se apagasse.

Preciso que as linhas sejam ocultadas e não apagadas.
Tens alguma idéia?

 
Postado : 14/09/2017 10:27 am
joebsb
(@joebsb)
Posts: 44
Eminent Member
 

Oi Maurício....

Vc alterou o tópico de deletar para ocultar as linhas....

Segue então o código ajustado para simplesmente ocultar as linhas que não sejam brancas ok?

Só criar uma nova macro e copiar esse código nela!


'Macro criada por Joe em 14/09/2017
'Contato para freelancer: (61) 99136-3695
    For i = 1 To 800
        If ActiveSheet.Cells(i, 5).Interior.Color <> vbWhite Then
            ActiveSheet.Rows(i).EntireRow.Hidden = True
        End If
    Next

Espero ter ajudado galera.

Se ficou como vc queria... não esqueça de colocar o tópico como resolvido e mandar um TKS.

Abraços

Espero ter ajudado.

Se ficou como vc queria... não esqueça de marcar essa mensagem como tópico resolvido e mandar um TKS.

Abraços

 
Postado : 14/09/2017 10:27 am
(@mauricio-0)
Posts: 16
Active Member
Topic starter
 

Joe! Vc ta rápido!!! hahaha

Cara, não funcionou aqui... olha como ficou:

Fiz certo?
Depois eu atribui a um botão, mas quando eu clico nele não acontece nada.

Não sei se faz diferença, mas as linhas não estão totalmente em branco.
Existem colunas preenchidas mas já ocultas.
Quando não ocultas, ficam assim (grifei em amarelo):

Além disso todas as linhas de 0 a 800 das colunas D e G tem fórmula, o que também não sei se faz diferença.

Não sei se estou viajando demais... mas fico aqui imaginando que talvez funcionasse se fosse possível criar uma regra que dissesse que ocultasse a linha que obedecesse a isso:
1) entre as linhas 1 a 800;
2) se estiverem vazias as células das colunas H, I, J, K, L E se a célula da coluna G tiver um resultado que seja diferente de algum dos cargos possíveis.
Dessa forma acho que pegaria as seguintes linhas:

Deu pra entender?

Vou colocar ao final da postagem a listagem de cargos possíveis. São 21. Se o que estou pedindo for possível, me diz como é melhor que a listagem esteja. Não sei se mando os nomes corridos (como vou fazer) ou se mando separado por "," ou por ";"... enfim, quero dar o mínimo de trabalho possível.

Obs.: Lista dos cargos possíveis:
ADMINISTRADOR
ASSESSOR DE GESTÃO
ASSESSOR (A) JURIDICO (A)
ASSESSOR DE COMUNICAÇÃO
ASSESSOR EXECUTIVO
ASSESSOR TÉCNICO POLIT. PÚBLIC
ASSISTENTE ADMINISTRATIVO
ASSISTENTE DE PESQUISA
AUTÔNOMO
AUXILIAR DE SERVIÇOS GERAIS
CONSELHEIRO
CONTABILISTA
CONTADOR
COORDENADOR ADMINISTRATIVO
COORDENADOR GERAL
PSICÓLOGO
PSICÓLOGO FISCAL
RECEPCIONISTA
RELAÇÕES PÚBLICAS
SECRETÁRIA EXECUTIVA
TECNICO DE CONTABILIDADE

 
Postado : 14/09/2017 11:06 am
joebsb
(@joebsb)
Posts: 44
Eminent Member
 

Rapaz.... esse critério aí já fica mais complicado....

Com esse tanto de cargo possível, a possibilidade de fazermos referência no código e na célular estar com um espaço diferente (ex: "COORDENADOR GERAL" e "COORDENADOR GERAL" ou ainda "CORDENADOR GERAL" é grande....

O ideal é conseguir um critério mais simples.....

No código que te enviei, ele está ocultando todas as linhas da coluna "E" que não sejam brancas entendeu?

O ideal seria achar um critério assim mais tranquilo..... Não é que o seu não possa ser feito.. mas demanda muito mais tempo para fazer.... e aqui do trabalho não vou poder programar isso tudo....

A questão do botão.... vc pode fazer assim...

vai lá em macros..... digita o nome que vc quer dar e depois clica em "CRIAR"...

Na tela que aparecer... vc cola o código.... e depois salva....

Daí adiciona o botão... e manda ele executar a nova macro entendeu?

Espero ter ajudado.

Se ficou como vc queria... não esqueça de marcar essa mensagem como tópico resolvido e mandar um TKS.

Abraços

 
Postado : 14/09/2017 12:03 pm
(@mauricio-0)
Posts: 16
Active Member
Topic starter
 

Joe, claro que entendo! eu que estou abusando da tua boa vontade.

JOOOOOOEEE tive uma idéia... pode fazer um código que diga que é pra ocultar a linha se o valor da coluna Q for exatamente 0?

 
Postado : 14/09/2017 2:29 pm
joebsb
(@joebsb)
Posts: 44
Eminent Member
 

Tá na mão....

'Macro criada por Joe em 14/09/2017
'Contato para freelancer: (61) ******
    For i = 1 To 800
        If ActiveSheet.Cells(i, 17).Text = 0 Then
            ActiveSheet.Rows(i).EntireRow.Hidden = True
        End If
    Next

Abraços...... Não esqueça de marcar a resposta como resolvido se tiver funcionado ok? E mandar o tks

Espero ter ajudado.

Se ficou como vc queria... não esqueça de marcar essa mensagem como tópico resolvido e mandar um TKS.

Abraços

 
Postado : 15/09/2017 7:56 am
(@mauricio-0)
Posts: 16
Active Member
Topic starter
 

joebsb"

JOOOOOOOOOE SEU LINDO! VALEEEEEEU! resolveu tudo agora

 
Postado : 15/09/2017 8:42 am