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

  • Initiateur de la discussion Initiateur de la discussion Chrige
  • Date de début Date de début

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 !

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

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
 
@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
 
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

Dernière édition:
- 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
0
Affichages
276
Retour