Autres Mettre en rouge et en gras des années en format texte à l'intérieur de texte

Chrige

XLDnaute Occasionnel
Bonjour à tous

Mettre en rouge des années, c’est facile avec une MFC
Mettre en rouge une partie de texte, en manuel c’est facile aussi
Mais comme j’ai plus d’une centaine de cas
Je me demande s’il serait possible de le faire en macros
Ou alors avec une fonction à l’intérieur d’une MFC

Dans l’exemple sont à mettre en rouge et en gras les années
- Ces années sont à l’intérieur de texte
- Le nombre de caractères est différent
- L’emplacement de l’année est différent
- Seul point commun, les seuls chiffres présents ne concernent que l’année et il n’y a qu’une seule année dans chaque cellule.
On peut dire donc qu'il y a toujours 4 chiffres ou aucun chiffre
-Toutes les années sont sur 4 chiffres et commencent donc toujours par 1 ou par 2

Cela à peut-être déjà été fait, mais je pas trouvé sur le Web ??
 

Pièces jointes

  • Nombre en rouge dans du texte.xlsm
    8.5 KB · Affichages: 23

soan

XLDnaute Barbatruc
Inactif
Bonjour à tous,

@patricktoulon

Je crois que dans la ligne ci-dessous, le signe « : » juste à droite de « Else » est en trop ! ça signifie : « Sinon rien du tout » et i = i + 4 est toujours exécuté, de façon inconditionnelle !

Else: i = i + 4 'REBONDi APRES LA CHAÎNÉ DÉJÀ TESTÉE!!!!!

soan
 

soan

XLDnaute Barbatruc
Inactif
@job75

??? ben si ! le signe deux-points « : » est le séparateur d'instructions ; donc là, le « Else: » signifie « Else fin d'instruction » et ça passe à l'instruction suivante qui est i = i + 4 ; donc comme je le disais, ce i = i + 4 est exécuté sans condition, donc de façon inconditionnelle. (je crois pas que c'est ce qui était voulu !)

soan
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une nouvelle version qui tient compte des parenthèses ou autre.
VB:
Sub mapomme()
Dim c As Range, x$, d1&, d2&, t0!
   t0 = Timer
   Application.ScreenUpdating = False
   For Each c In Range("a1").CurrentRegion
      x = c
      d1 = InStr(x, "1"): d2 = InStr(x, "2")
      If d1 = 0 Then d1 = d2 Else If d2 > 0 Then If d2 < d1 Then d1 = d2
      If d1 > 0 Then With c.Characters(d1, 4).Font: .Color = vbRed: .Bold = True: End With
   Next c
   MsgBox Format(Timer - t0, "0.000\ sec.")
End Sub
 

Pièces jointes

  • Chrige- Nombre en rouge- v1.xlsm
    89.6 KB · Affichages: 6
Dernière édition:

Discussions similaires