Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

REPT et couleur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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:
Re : REPT et couleur

Bonjour mth et merci pour ta réponse.

J'ai testé ton code en VBA mais j'ai le message d'erreur suivant qui apparait:

Erreur d'execution '13'
Incompatibilité de type

Merci d'avance pour ta réponse

Kahyasse
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
566
Réponses
2
Affichages
782
Réponses
17
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…