REPT et couleur

Kahyasse

XLDnaute Nouveau
Bonjour,

Je cherche actuellement à mettre en place des barres de "conformité" dans un fichier excel.
En faite j'ai trois catégorie C (Conforme), NC (Non Conforme) et AV (A Vérifier).
Chacune est représentée par un pourcentage et le total des trois fait 100%.
Pour l'instant j'ai réussi à effectué une barre de conformité prenant en compte chacun des pourcentage avec la fonction REPT:
=REPT("l";D3)&REPT("l";E3)&REPT("l";F3)
Le seul problème qu'il me reste est le changement de couleur entre les REPT. En effet je voudrais que les "l" par rapport à D3 soit Vert, les "l" par rapport à E3 rouge et les "l" par rapport à F3 gris.
Maintenant je crois pas que cela soit faisable par les formules mais peut-être par VBA alors j’attends votre aide car malgré mes recherches je n'ai pas trouvé se que je voulais.

Merci d'avance pour votre aide.

Kahyasse
 

Pièces jointes

  • Conformité.xlsx
    10.9 KB · Affichages: 67

Kahyasse

XLDnaute Nouveau
Re : REPT et couleur

Merci ralph45 pour ta réponse

l'idée est bonne mais je chercher vraiment des barres de conformités en face de chaque textes afin de pouvoir les classer par ordre de pourcentage croissant ou inversement lorsque tout mes textes seront présent.
J'ai déjà testé de mettre des graphes en face de chaque textes mais lors du tri, ces graphiques disparaissent ou ne suivent pas les lignes.

A plus...

Kahyasse
 

mth

XLDnaute Barbatruc
Re : REPT et couleur

Bonjour à tous,

Un essai en VBA avec ce code (bien que j'adore la proposition de Ralph :) )

Code:
Sub Macro1()
Dim c As Range
Dim Serie1 As Long, Serie2 As Long, Serie3 As Long
Application.ScreenUpdating = False
With Sheets("Feuil1")
    .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row) = .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row).Value
    For Each c In .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row)
        Serie1 = c.Offset(0, -3)
        Serie2 = c.Offset(0, -2)
        Serie3 = c.Offset(0, -1)
 
        With c.Characters(Start:=1, Length:=Serie1).Font
            .Color = -11489280
        End With
        With c.Characters(Start:=Serie1 + 1, Length:=Serie2).Font
            .Color = -16776961
        End With
        With c.Characters(Start:=Serie1 + Serie2 + 1, Length:=Serie3).Font
            .Color = -4165632
        End With
    Next c
End With
Application.ScreenUpdating = True
End Sub

Bonne journée ,

mth
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : REPT et couleur

re,

Ca fonctionne chez moi sur le fichier que tu as fourni, cf en pièce jointe clique sur le bouton GO pour voir ce que ça donne de ton coté

@ +

mth
 

Pièces jointes

  • Conformité.xlsm
    21.8 KB · Affichages: 91

Kahyasse

XLDnaute Nouveau
Re : REPT et couleur

RE mth,

Petit souci en fait. J'ai pu voir que ton code ne prend en compte que les 6 premières ligne du tableau. Comment je dois faire pour changer ceci et que la procédure aille jusqu’à la fin lorsque je rajoute des lignes.

Merci d'avance pour ton aide

Kahyasse
 

mth

XLDnaute Barbatruc
Re : REPT et couleur

re :)

Non, le code prend en compte l'intégralité des cellules remplies de la colonne G, pour la mise en couleur.
En revanche, il faut que les formules REPT soient présentes avant l'exécution du code, ce qui pour l'instant n'est pas fait.
Souhaites-tu que le code gère également l'insertion de la formule jusqu'à la dernière ligne renseignée?

@ +

mth
 

mth

XLDnaute Barbatruc
Re : REPT et couleur

re :)

Au cas où essaie ainsi:

Code:
Sub Macro1()
Dim c As Range
Dim Serie1 As Long, Serie2 As Long, Serie3 As Long
Application.ScreenUpdating = False
With Sheets("Feuil1")
     .Range("G2:G" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = _
        "=REPT(""l"",RC[-3])&REPT(""l"",RC[-2])&REPT(""l"",RC[-1])"
    .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row) = .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row).Value
    For Each c In .Range("G2:G" & .Cells(Rows.Count, 7).End(xlUp).Row)
        Serie1 = c.Offset(0, -3)
        Serie2 = c.Offset(0, -2)
        Serie3 = c.Offset(0, -1)
 
        With c.Characters(Start:=1, Length:=Serie1).Font
            .Color = -11489280
        End With
        With c.Characters(Start:=Serie1 + 1, Length:=Serie2).Font
            .Color = -16776961
        End With
        With c.Characters(Start:=Serie1 + Serie2 + 1, Length:=Serie3).Font
            .Color = -4165632
        End With
    Next c
End With
Application.ScreenUpdating = True
End Sub

@ +

mth
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 098
Membres
104 031
dernier inscrit
RimeF