Ir ao conteúdo
  • Cadastre-se

Formatação condicional


Posts recomendados

Oi galera,

Bom dia.

 

Estou montando uma planilha onde tenho algumas atividades para serem realizadas e o status de cada uma delas que pode ser: "Pendente", "Em Andamento" e "Concluído".

Preciso encaminhar todos os dias um quadro com as atividades que estão pendentes e em andamento e por essa razão queria ajuda.

A minha ideia era que o quadro conseguisse puxar automaticamente da tabela as informações, ou seja, ele faria uma busca na tabela, encontraria as atividades que estão como pendente e em andamento, levaria o campo "atividade" para o quadro (este campo será a descrição da atividade) e ai pintaria a célula com a cor correspondente (amarelo para pendente e azul para em andamento).

Eu tentei fazer, mas não consegui, pois quero que ele busque as informações e na pesquisa que eu montei ele passa de célula em célula e ai o quadro fica com algumas linhas vazias por conta das células que estão com o status concluído. O que eu desejo é que a busca ignore os concluídos e vá colocando no quadro, linha após linhas, aqueles que estão pendentes e se for possível, quando a tabela for atualizada ele tire do quadro a atividade concluída e na mesma célula ele busque o próximo pendente e preencha.

Alguém consegue me auxiliar?

Obrigada!

TESTE_FORMATAÇÃO.xlsx

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Ma  Depende.... o Excel não irá pensar sozinho sem números.

 

Depende de como os dados estão dispostos. Qual a diferença, além da óbvia, entre a atividade pendente, da "em andamento" e concluída? a quantidade de dias?

 

Tu mesmo podes fazer um auto-filtro, bastanto selecionar a primeira linha, e em "dados" selecione auto-filtro. Daí tu filtras os dados que não queres...

 

Agora a formatação condicional tu terás de dar dados para ela...

 

Por exemplo:

 

Coluna A  || Coluna B || Coluna C || Coluna D

pendente --

 --                andamento

                                      Concluído

 

Daí tu crias a seguinte regra: Se valor da cédula C = concluído - retornar "concluído" em verde

Se valor da Cédula B=andamento - retornar andamento em amarelo

Sevalor da cédula A=pendente - retornar pendente, em vermelho

 

 

Se soubermos como são os dados, ou pelo menos, o que distingue uma situação de outra, ficaria mais fácil

 

Por exemplo, eu tenho uma fórmula que conta 60 dias, a partir de hoje. Se faltar mais de 60 dias, retorna "OK" em verde.

 

Se faltar 45~60 retorna "Atenção' em amarelo

 

Se faltar menos de 45, retorna "Enviar" em vermelho

Link para o comentário
Compartilhar em outros sites

@Basole Exatamente isso.
Estou mandando a planilha certa agora com todas as abas que vão ter informações para serem puxadas para o diário de bordo.
Você vai notar de na aba "diário de bordo" dessa planilha tem um cabeçalho com o nome das planilhas e ai em cada uma das colunas eu preciso buscar a informação necessária na respectiva aba (informações pendentes e em andamento).
A coluna com a informação que eu preciso esta com "xxxx" em cada uma das abas.

 

Obrigada de novo.

 

Link para o comentário
Compartilhar em outros sites

Muito obrigada @Basole !!
O estranho é que eu inclui o comando em outra planilha onde estava o resto do código e apesar das abas serem as mesmas o código dá um erro de execução.

Estou incluindo dessa vez a planilha com todo o código que eu estou montando e que inclusive você tem me ajudado bastante. Obrigada de novo :)

A parte da pesquisa também, não está puxando de outros campos, além do txtID, o que eu acho estranho também porque eu reescrevi e o código aparentemente está correto.

Acredito que eu esteja comendo bola em alguma parte.

Planilha Completa

Link para o comentário
Compartilhar em outros sites

Citação

O estranho é que eu inclui o comando em outra planilha onde estava o resto do código e apesar das abas serem as mesmas o código dá um erro de execução.

O errro é porque voce incluiu alem das abas da planilha anterior a aba Entrada

O outro erro que encontrei é na quando da o duplo click no listbox e carrega os txtObs. -> o error é porque o listbox so suporta 10 colunas e no caso é a 11º 

P/ diblar este error eu alterei a macro p/ buscar este campo direto na planilha e nao no campo 11 da listbox:

 

Set rng = Sheets("Auditoria").Columns(1).Find(ListBox1.List(ListBox1.ListIndex, 0))
If Not rng Is Nothing Then
Me.txtObs = rng.Offset(, 10).Value

 

Qual (s) outros erros que voce detectou ? 

Link para o comentário
Compartilhar em outros sites

@Basole Outra coisa que eu percebi é que quando ele faz aquela busca de pendente e em andamento e pinda as células no Diário de Bordo, ele está pintando a linha toda. Não tem como pintar só a célula da coluna referente? Por exemplo: tenho uma informação pendente na aba de auditoria, ai ela ficará em amarelo no diário de bordo, só na coluna de auditoria. 

Link para o comentário
Compartilhar em outros sites

@Ma fiz as alteracoes que pediu e agora esta pintando somente a celula que contem os dados na aba diario de bordo.

   

Na pesquisa pelo formulario o frmAuditoria, eu fiz as alteraçoes e agora esta pesquisando pelos outros campos, então [e so seguir este form como exemplo para alterar nos outros. 

E tb. corrigi o erro que aparecia no duplo click no listbox.

Não pude fazer mais teste.

Veja se esta de acordo.

 

vba_TESTE.xlsm

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

@Basole  Tudo bem?

 

Queria te pedir uma ajuda...
No código abaixo que você me ajudou a construir, acrescentei  2 novas abas "CEI" e "CUBOSAS", porém elas não estão sendo atualizadas automaticamente no diário de bordo como as outras.

Poderia dar uma olhada no código, por favor?

 

Function Atualiza_Quadro_Formata() '(rng As Range)
' ****** Funcao que "puxa" as informações das abas p/ a aba Diario de Borde e formata(color) as linhas de acordo c/ o status *****

Dim c As Range, rng As Range
Dim ws2 As Worksheet
Dim ws1 As Worksheet
Dim i As Long, uL As Long
Dim WS_Count As Integer
Dim y As Integer
Dim X As Long, XD As Long, XDB As Long

Application.ScreenUpdating = False

On Error GoTo Erro
i = 8 ' Nº da 1ª linha da aba Diario de bordo que recebera dados

      WS_Count = ActiveWorkbook.Worksheets.Count  'Define a qtd total de Planilhas (abas)
     
      Set ws2 = Sheets("diário de bordo")
      Set ws1 = ActiveSheet

With ws2

      uL = .Range("A8").CurrentRegion.Rows.Count
           .Range(.Cells(i, 1), .Cells(uL + 1, 8)).ClearContents ' Limpa os dados da aba diario de bordo
           .Range(.Cells(i, 1), .Cells(uL + 1, 8)).Interior.ColorIndex = xlColorIndexNone 'Limpa formatacao (color) do intervalo da aba diario de bordo
       
For y = 1 To WS_Count
        
      If Sheets(y).Name <> "Diário de Bordo" And Sheets(y).Name <> "Entrada" Then
          Sheets(y).Activate
       If ActiveSheet.Name = "Invs e Partic" Then X = 12: XD = 4: XDB = 4
       If ActiveSheet.Name = "Auditoria" Then X = 10: XD = 3: XDB = 1
       If ActiveSheet.Name = "Orgão Regulador" Then X = 9: XD = 3: XDB = 6
       If ActiveSheet.Name = "Jurídico" Then X = 6: XD = 3: XDB = 5
       If ActiveSheet.Name = "Demandas Internas" Then X = 11: XD = 4: XDB = 3
       If ActiveSheet.Name = "Caixa do SI" Then X = 11: XD = 4: XDB = 2
       If ActiveSheet.Name = "CEI" Then X = 7: XD = 4: XDB = 7
       If ActiveSheet.Name = "CUBOSAS" Then X = 8: XD = 6: XDB = 8
         
       uL = ActiveSheet.Cells(Rows.Count, X).End(xlUp).Row

       Set rng = Range(Cells(2, X), Cells(uL, X))

For Each c In rng

'       o uso de *(asterisco) -> permite que voce inseria -> Ex.: Pendente ou pendente
      If c Like "*endente" Or c Like "*m *ndamento" Then
      .Cells(i, XDB).Value = ActiveSheet.Cells(c.Row, XD).Value ' preenche os dados na aba diario de bordo

      If c Like "*endente" Then .Cells(i, XDB).Interior.ColorIndex = 44  ' preenche a formatacao(color ) laranja
      If c Like "*m *ndamento" Then .Cells(i, XDB).Interior.ColorIndex = 24 ' preenche a formatacao(color ) azul

       i = i + 1 ' define o nº da proxima linha (aba) diario de bordo

End If

Next

End If

Next
Application.ScreenUpdating = True
If MsgBox("Deseja visualizar a aba " & ws2.Name & " ?", vbQuestion + vbYesNo, "Aviso") = vbYes Then
.Activate
Else
ws1.Activate  ' Ativa a aba Que foi alterada
End If

End With

Exit Function

Erro: Application.ScreenUpdating = True
MsgBox Err.Description

End Function

 

Link para o comentário
Compartilhar em outros sites

@Ma tudo bem obrigado. 

 

Sem ver seu arquivo fica difícil analisar com exatidao, mas acredito que está faltando voce habilitar o evento Change das novas Planilhas (abas) criadas: 

De acordo com que voce passou acima...

Na aba "CEI"

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 7 Then
Atualiza_Quadro_Formata ' chama a funcao que está no modulo1
End If
End Sub

E na aba "CUBOSAS" :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 8 Then
Atualiza_Quadro_Formata ' chama a funcao que está no modulo1
End If
End Sub

 * Cole o codigo abaixo no modulo de cada aba..

Caso não de certo, envie sua planilha p/ meu email. 

 

Link para o comentário
Compartilhar em outros sites

  • mês depois...

@Basole Boa tarde...tudo bem?

Gostaria de saber se consegue me ajudar. Ainda estou mexendo na planilha que você me ajudou a montar e no painel de controle onde os status "em andamento" e "pendente" aparecem, toda vez que atualizo alguma informação nas outras planilhas, alguns registros desse painel duplicam.

Você tem ideia do que pode estar acontecendo?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!