XL 2016 Mise en gras et couleur de quelques caractères distincts sur Excel

Thridace

XLDnaute Nouveau
Bonjour,

Étant nul en programmation et macro, mais bon en Excel, j'ai un fichier Excel avec des dizaines de milliers de lignes qui répertorie tous les mots valables au scrabble avec plein d'indications de toutes sortes pour mieux les assimiler.

Je n'ai pas réussi sur Excel à transformer tous les "vt" en "vt" (gras et bleu roi), "vi" en "vi" (gras et rouge) et "inv" en "inv" (gras et rouge).

"vt" pour verbes transitifs, "vi" pour verbes intransitifs (c'est important de les différencier pour ne pas avoir zéro au scrabble en jouant par exemple "DAIGNEE" qui n'est pas admis. Et "inv" pour les mots invariables.

Avec la fonction remplacer et en changeant de format c'est toute la cellule qui change de format et non pas les caractères voulues. Il faut sans doute une petite macro.
Alors, je vous remercie infiniment si vous pouviez me faire cette macro.
Ci-joint un fichier Excel où je n'ai laissé que très peu de ligne représentatives. J'ai mis une feuille nommée "Avant" et une autre "Après" pour montrer le résultat voulu (bien sûr à la main et cellule par cellule ça prend du temps !


Après :

1637919946602.png


Avant :

1637919990546.png
 

Pièces jointes

  • Fichier Tirages en gras.xlsx
    13.1 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Thridace et bienvenu sur XLD,
Un essai en PJ, il suffit d'appuyez sur le bouton, avec cette macro :
VB:
Public T ' Tableau des mise en forme, avec Mot, Gras, Couleur
' Codes couleurs : noir 0,rouge 255,bleu 16711680,violet 10498160
Sub Colore()
    Dim L%, C%, N%, Mot, Gras, Couleur
    T = Array("vt", True, 16711680, "vi", True, 255, "inv", True, 255, "günz", True, 0, "(DE-  EN-)", False, 10498160, "(dé-)", False, 10498160)
    Application.ScreenUpdating = False
    For L = 1 To Range("B65500").End(xlUp).Row
        For C = 0 To UBound(T)
            If Cells(L, "B") Like "*" & T(C) & "*" Then
                Mot = T(C): Gras = T(C + 1): Couleur = T(C + 2)
                N = InStr(1, Cells(L, "B"), Mot)
                With Cells(L, "B").Characters(Start:=N, Length:=Len(Mot)).Font
                    .Bold = Gras
                    .Color = Couleur
                End With
            End If
        Next C
    Next L
End Sub
 

Pièces jointes

  • Fichier Tirages en gras.xlsm
    21.7 KB · Affichages: 7

Discussions similaires