Padronizar cores no...
 
Notifications
Clear all

Padronizar cores nos gráficos de um Dashboard

11 Posts
2 Usuários
0 Reactions
2,853 Visualizações
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Pessoal, boa noite.

Estou editando reestruturando uma planilha, dentre as melhorias estou incorporando um Dashboard.

A minha dúvida é a seguinte:
Terei uma visão para cada projeto (os dados ficarão em um BD).
Tenho setores da empresa que podem ou não participar de cada projeto.
Como posso padronizar todos os gráficos do Dashboard de forma que cada setor possua uma cor padronizada, por exemplo:

    Sempre que a Engenharia fizer parte do projeto ela aparecerá em AZUL[/list:u:3sek4has]

      Sempre que o Desenvolvimento de Software fizer parte deverá aparecer em VERMELHO[/list:u:3sek4has]

        Sempre que a Engenharia de Materiais fizer parte deverá aparcere em AMARELO[/list:u:3sek4has]
        e assim por diante.

        Quando estes setores não fazem parte de um projeto, estou ocultando as células referentes aos mesmos, a fim de que não apareçam os dados nos gráficos do Dashboard porém, os outros setores não podem assumir as cores reservadas aos mesmos.

        CADA SETOR DEVE POSSUIR UMA COR PADRONIZADA E DE USO EXCLUSIVO DO MESMO.

        Como faço esta padronização?
        Teri que usar VBA?

        Grato a quem me ajudar.

         
Postado : 15/02/2017 8:33 pm
(@jpedro)
Posts: 111
Estimable Member
 

Boa noite. Vc pode anexar sua pasta para termos uma ideia?!

 
Postado : 17/02/2017 10:09 pm
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Pessoal é o seguinte: a Empresa na qual eu trabalho esta necessitando de um aprimoramento na planilha modelo de controle de custo de serviço,sendo gerada uma planilha para cada cliente.
Na empresa existem diversos setores (mais de 20) que podem ou não participar de cada contrato, por exemplo:
Cliente A contratou jardinagem, limpeza, copa, cozinha.
Cliente B contratou jardinagem, lavanderia, manutenção elétrica.
Cliente C contratou ao todo 12 serviços.
Cliente D contratou ao todo 5 serviços.
São mais de 50 clientes.

Montei um Dashboard.
A diretoria da empresa me pediu para que os serviços que não fazem parte daquele contrato não apareça nos gráficos.
Pediu também que as cores dos serviços sejam padronizadas em todos os relatórios (arquivos diferentes de Excel)

Nos gráficos nas configurações desabilitei o preenchimento automático de cores e selecionei preenchimento sólido, selecionei cor de cada serviço manualmente nos 6 gráficos que compões o Dashboard.

Tentei ocultar as colunas dos serviços que não fazem parte do contrato porém, alguns gráficos mudaram as cores que havia selecionado para cada serviço.

Com o uso do filtro não deu problema porém, é necessário desabilitar serviços manualmente no filtro de cada gráfico.

Pensei em mudar as propriedades de todos os gráficos (cor de cada categoria, nome de cada categoria, desabilitar ou habilitar categorias) através de VBA, desta forma a área comercial teria um userform para selecionar as categorias que fazem parte do contrato e os gráfico serão automaticamente ajustados porém, não encontrei os respectivos métodos destes gráficos.

Segue uma planilha simples (a do serviço é 100x mais complexa) que criei rapidamente em cas para exemplificar.

 
Postado : 21/02/2017 5:49 pm
(@jpedro)
Posts: 111
Estimable Member
 

gilbertjrs, entendido. Não tem jeito, a saída é manipular os objetos via VBA. Os gráfico e os dados do gráfico ficam na mesma plan? Pensei o seguinte, um código para ocultar as colunas com valor vazio ou zero dentro de um range específico, atendendo ao pedido "A diretoria da empresa me pediu para que os serviços que não fazem parte daquele contrato não apareça nos gráficos." e outro para mudar as cores dos pontos de séries com base nos nomes (ex.: copa, jardinagem, etc.).Interessante tbm seria cria uma plan auxiliar com os nomes dos serviços e as respectivas cores, aí no código faria referência à célula com a cor (ex.: Série(x).interior.color = Range("A1").interior.color).
Vc tem uma noção de VBA? Pq posso postar modelos dos códigos e vc adapta ou uma melhor opção é vc anexar esse exemplo de pasta que criou.

Abraços!

 
Postado : 21/02/2017 11:22 pm
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Boa tarde.

Tenho noção de VBA sim, não encontrei os métodos específicos para modificar os atributos dos gráficos.
Se for possível postar uma implementação agradeço, aí eu personalizo.

Vlw

Grato por enquanto.

Gilberto

 
Postado : 22/02/2017 11:53 am
(@jpedro)
Posts: 111
Estimable Member
 

Caro Gilberto,
Segue modelo de pasta de trabalho já com os códigos. Se vc tiver muitos gráficos para ficar mudando as cores, recomendo fazer um loop deles tbm. No modelo tem só três, então, tá tranquilo.

Deu um trabalhinho (rsrs), mas espero ter ajudado. Qlq dúvida é só falar

Abraços!

 
Postado : 22/02/2017 6:01 pm
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Grato. Amanhã adaptarei a planilha do serviço.

 
Postado : 22/02/2017 7:59 pm
(@jpedro)
Posts: 111
Estimable Member
 

Gilberto, boa tarde.
Conseguiu adaptar?
Obs.: Se o modelo resolveu o problema ou ajudou a resolver, marque como "resolvido" e, caso queira, clique na "mãozinha" para agradecer.

Abraços!

 
Postado : 23/02/2017 2:06 pm
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Desculpe não ter respondido ainda.

Tive que atender outras prioridades no serviço e esta demanda ficou adormecida, amanhã darei continuidade e postarei a resposta se deu certo.

Grato por enquanto.

 
Postado : 08/03/2017 9:20 pm
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Boa noite.

Hoje consegui adaptar, precisei modificar o código pois na planilha existem gráficos compostos (segue a planilha modificada)

O código ficou assim:

Sub PontoCor()
    Dim x As Integer
    Dim varValues As Variant
    Dim cht As ChartObject

    For Each cht In ThisWorkbook.Sheets("DashBoard").ChartObjects
            
        For Each cdlseries In cht.Chart.FullSeriesCollection
            With cdlseries 'Gráfico 1
                varValues = .XValues
                If cht.Chart.FullSeriesCollection.Count = 1 Then
                    For x = LBound(varValues) To UBound(varValues)
                        If varValues(x) = "Total" Then
                            .Points(x).Interior.Color = RGB(0, 0, 0)
                        End If
                        For i = 2 To 13 'Quantidade de serviços
                            If varValues(x) = Sheets("Índice_Cores").Range("A" & i).Value Then
                                .Points(x).Interior.Color = Sheets("Índice_Cores").Range("A" & i).Interior.Color
                            End If
                         Next i
                    Next x
                Else
                    With .Format.Fill
                        For i = 2 To 13 'Quantidade de serviços
                            If cdlseries.Name = Sheets("Índice_Cores").Range("A" & i).Value Then
                                .ForeColor.RGB = Sheets("Índice_Cores").Range("A" & i).Interior.Color
                                Exit For
                            End If
                        Next i
                    End With
                End If
            End With
        
        Next cdlseries
    Next cht
End Sub

Obrigado pelo auxílio

 
Postado : 23/03/2017 9:15 pm
(@jpedro)
Posts: 111
Estimable Member
 

Vc precisa marcar o tópico como resolvido... e, se quiser, clicar na mãozinha acima.

 
Postado : 15/04/2017 8:03 am