Colorir com condiçõ...
 
Notifications
Clear all

Colorir com condições.

25 Posts
3 Usuários
0 Reactions
3,842 Visualizações
(@bracinho)
Posts: 0
New Member
Topic starter
 

Pessoal, bom dia!

Já pesquisei sobre esse assunto aqui no fórum. Encontrei vários bons exemplos, mas, infelizmente, não cheguei ao objetivo pleno.

Eu tenho uma listview que apresenta o orçamento mensal de despesas. Nele consta os centros de custo na vertical e os meses na horizontal.

Ex:
jan fev mar abr
Diversão Orçado 400 420 410 380
Diversão Realizado 250 540 600 120

O que eu quero é que, se o valor do realizado for maior que o valor do orçado, o mesmo fica em vermelho.

Os centros de custos ficam sempre na mesma ordem, ou seja, a linha referente a DIVERSÃO ORÇADO, por exemplo, sempre será a linha 1 e, consequentemente, a referente a DIVERSÃO REALIZADO será a linha da DIVERSÃO ORÇADO + 1, ou seja, linha 2.

É algo complexo, mas acredito que os vocês tenham algum palpite.

 
Postado : 11/09/2015 6:30 am
(@mprudencio)
Posts: 0
New Member
 

Um modelo do seu arquivo (NAO É FOTO), ajuda bastante

 
Postado : 11/09/2015 6:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Complexo é ter de adivinhar onde estão os dados para comparação e como é carregado o ListView, então só podemos supor ou da alguns palpites, mas se anexar um modelo com certeza terá uma resposta exata.
Para o que pretende o ideal é comparar o valor antes de preencher o listview e conforme o resultado preencher formatando a cor.

Seria algo mais ou menos assim :

If valor_do_realizado > valor_do_orçado Then
                .ListItems(i).ForeColor = RGB(255, 0, 0)
                .ListItems(i).ListSubItems.Item(1).ForeColor = RGB(255, 0, 0)
 
Postado : 11/09/2015 7:54 am
(@bracinho)
Posts: 0
New Member
Topic starter
 

Ok Marcos,

Desenvolvi o exemplo referido. Veja-o:

Observa que os dados contidos na Sheet (Plan1) possui todas as condições necessárias.

Em suma, preciso que os dados apresentados na listview, fiquem iguais aos dados contidos no sheet.

Att,

Alisson Lorenzon.

 
Postado : 13/09/2015 4:35 am
(@mprudencio)
Posts: 0
New Member
 

Ve se isso ajuda

 
Postado : 13/09/2015 11:26 am
(@bracinho)
Posts: 0
New Member
Topic starter
 

Marcelo, boa noite!

Desculpa-me, mas acho que você anexou o mesmo arquivo que eu postei no fórum.

Digo isso, pois não identifiquei nenhum alteração.

Att,

Alisson.

 
Postado : 13/09/2015 5:37 pm
(@mprudencio)
Posts: 0
New Member
 

Altere os valores realizado que percebera as diferenças.

Não usei programação usei formatação condicional se o valor realizado for maior que o programado a fonte fica vermelha

 
Postado : 13/09/2015 6:58 pm
(@bracinho)
Posts: 0
New Member
Topic starter
 

Marcelo, bom dia!

A sua formatação ficou legal e tal, mas eu preciso que a mesma seja apresentada na listview! :D

 
Postado : 14/09/2015 4:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alisson, você está querendo colocar muitos tipos de formatação coisa que eu não aconselharia, como o tempo é corrido, fiz uma adaptação somente colorindo se o valor for maior que da linha acima, de uma olhada e veja se quiser adicionar outras formatações terá que fazer outros IF(s) ou tambem daria para criar uma rotina a parte so para formatar, mas fica o exemplo, se der quando tiver mais tempo volto novamente nesta planilha, mas não prometo nada urgente.

Colorir Item ListView de acordo com condição

Faça os testes e veja se seria isto.

[]s

 
Postado : 15/09/2015 12:45 pm
(@bracinho)
Posts: 0
New Member
Topic starter
 

Marcelo,

Ótimo, porém, entretanto, preciso inserir um if para Renda, a qual encontra-se na primeira e segunda linha da listview. Esse If fará a seguinte análise:

Se o valor do realizado > que o valor orçado = Fonte Verde.
Se o valor do realizado < que o valor orçado = Fonte Vermelha.

Eu tentei fazer isso, mas não consegui!

=/

 
Postado : 16/09/2015 5:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo,
Ótimo, porém, entretanto, preciso inserir um if para Renda, a qual encontra-se na primeira e segunda linha da listview. Esse If fará a seguinte análise:
Se o valor do realizado > que o valor orçado = Fonte Verde.
Se o valor do realizado < que o valor orçado = Fonte Vermelha.
Eu tentei fazer isso, mas não consegui!
=/

Alisson, o que fiz foi somente uma parte para você ter uma noção e ajustar a rotina conforme sua necessidade, esta é a base de tudo, mas não entendi o que quer dizer "inserir um if para Renda, a qual encontra-se na primeira e segunda linha da listview", eu somente me atentei se o valor da segunda linha for menor que a primeira, mas se quer adicionar uma segunda condição, não precisa de outro IF é só completar com ELSE a linha que faz a comparação, por exemplo :
Esta linha verifica se o valor abaixo é maior que o acima :
If Worksheets("Data").Range("C" & pos) > Worksheets("Data").Range("C" & pos - 1) Then .ListItems(lv_item).ListSubItems.Item(2).ForeColor = RGB(255, 0, 0)
então ajustaríamos para :

If Worksheets("Data").Range("C" & pos) > Worksheets("Data").Range("C" & pos - 1) Then .ListItems(lv_item).ListSubItems.Item(2).ForeColor = RGB(255, 0, 0) Else .ListItems(lv_item).ListSubItems.Item(2).ForeColor = RGB(0, 128, 0)

Quanto a condição MAIOR ou MENOR é só alterar o sinal, e quanto as cores, veja nesta tabela - http://dmcritchie.mvps.org/excel/colors.htm , e ajuste conforme quiser.

[]s

 
Postado : 16/09/2015 6:44 am
(@bracinho)
Posts: 0
New Member
Topic starter
 

Mauro,

Observa que ao inicializarmos o projeto, a primeira linha da listview refere-se a RENDA e, consequentemente, a segunda linha refere-se ao realizado da RENDA, ok?

O seu ELSE resolve sim, porém eu quero usá-lo apelas para verificar se o realizado da RENDA é menor ou maior.

 
Postado : 16/09/2015 7:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro,
Observa que ao inicializarmos o projeto, a primeira linha da listview refere-se a RENDA e, consequentemente, a segunda linha refere-se ao realizado da RENDA, ok?
O seu ELSE resolve sim, porém eu quero usá-lo apelas para verificar se o realizado da RENDA é menor ou maior.

Bracinho, realmente está me deixando confuso, no modelo que voce tinha enviado temos :
Linha 1 : ID - Centro de Custo - JAN - FEV - MAR
Linha 2 :..1......RENDA..........3.280 - 3.280.. 3.280
Linha 3 :......REALIZADA........2.400 - 3.420.. 3.420
Linha 4 : ..2..RETIRADA......... 500 - 500...........
Linha 5 :......REALIZADA........ 0,00 - 0,00 .........

depois Emprestimo Entrada, Realizada - Reemb. Emprestimo - Realizada e assim por diante, e agora você disse :
primeira linha da listview refere-se a RENDA e, consequentemente, a segunda linha refere-se ao realizado da RENDA - "eu quero apenas verificar se o realizado da RENDA é menor ou maior"
Você quer comparar somente os valores das linhas 1 e 2 ?

Se olhar o modelo que enviou, me atentei aos valores em vermelho que colocou, apesar de se analisar friamente não entendi porque outros que atenderiam a condição você não coloriu, e isto deixa duvidas.

 
Postado : 16/09/2015 11:23 am
(@bracinho)
Posts: 0
New Member
Topic starter
 

Não Mauro.

Antes de qualquer explicação, quero deixar claro que a sua sugestão caiu como uma luva.

Veja a minha explicação:

 
Postado : 16/09/2015 1:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vamos por parte :
A rotina compara sempre de duas em duas linhas, 3x2 - 5x4 - 7x6 - 9x8 ....
O que você tem de entender é que você conhece o que está fazendo e sabe o que quer, e eu e outros colegas desconhecemos seu aplicativo e nos baseamos pelas informações dadas e muitas vezes temos de ir por suposição.

Pelo que entendi a Rotina funciona perfeitamente, a única alteração que precisa é referente as Linhas 2 e 3, vamos falar de linhas porque eu só vejo Centro de Custo RENDA, realizada e outros e em nenhum campo vejo "orçamento ou valor orçado".

Então reforçando, teriamos de fazer duas comparações separadas ?
Uma para as linhas 2 e 3 e para as demais a rotina que postei ?

[]s

 
Postado : 16/09/2015 1:57 pm
Página 1 / 2