Colorer une chaine de texte sous excel

Résolu
florent69 -  
 florent69 -
Bonjour,
Je traite actuellement des données textuelles sous Microsoft Excel.
Je possède une vingtaine de fichiers et je doit créer un document de synthèse.
Les données sont ainsi distribuée:
X lignes représentant les thèmes
3 colonnes représentant les niveaux de réponses
Chaque thème peut avoir de 0 à trois niveaux de réponses
Pour synthétiser le tout il me faut rassembler les différentes réponses dans 1 seule colonne
J'utilise donc la fonction concatener ainsi:
=CONCATENER(Ax;"/";Bx;"/";Cx)
J'aimerai savoir si il existe une fonction qui me permettrait, pour plus de lisibilité et pour ne pas tout avoir a faire à la main, de colorer chaque chaîne d'une couleur différente genre Ax en bleu, Bx en vert, Cx en rouge
Merci pour votre aide
Configuration: Windows XP
Firefox 3.0.13

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    ci joint maquette à adapter
    https://www.cjoint.com/?iArimJbumU

    et ses macros ci dessous en considérant que le nom des thèmes est en colonne 1 (A) et la mise en tricolore colonne 6 (F) en constante

    Const col As Byte = 6 'colonne de restitution
    
    Sub colorier(texto1, texto2, texto3, tricolore As Range)
    
    tricolore = texto1 & "/" & texto2 & "/" & texto3
    long1 = Len(texto1)
    long2 = Len(texto2)
    long3 = Len(texto3)
    
    With tricolore
        If long1 > 0 Then: .Characters(Start:=1, Length:=long1).Font.ColorIndex = 4
        If long2 > 0 Then: .Characters(Start:=long1 + 1, Length:=long2).Font.ColorIndex = 5
        .Characters(Start:=long1 + long2 + 3, Length:=long3).Font.ColorIndex = 3
    End With
    
    End Sub
    
    Sub test()
    Dim derlig As Long, lig As Long
    derlig = Range("A65536").End(xlUp).Row
    Columns(col).Clear
    Application.ScreenUpdating = False
    For lig = 2 To derlig
        colorier Cells(lig, 2), Cells(lig, 3), Cells(lig, 4), Cells(lig, col)
    Next
    Application.ScreenUpdating = True
    
    End Sub


    1
    1. florent69
       
      Merci beaucoup ça fait bien plaisir
      J'avoue que ça va me sortir une belle épine du pied pour ma présentation de résultats
      0