XL 2010 Mise en forme de quelques caractères sur formule

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 !

max.lander

XLDnaute Occasionnel
Bonjour à tous,


Je souhaite appliquer une mise en forme sur les derniers caractères d'une cellule.
Cela peut paraître simple mais le hic c'est que la cellule contient une formule.


Je pense que l'exemple en PJ parle de lui même.


Si vous avez des idées je suis preneur.

Merci,
 

Pièces jointes

Bonjour

Un essai avec ce code à placer dans la feuille OP
Au changement de la valeur de la cellule A11, la formule est mise en place en B11:H11
Elle est ensuite copiée en valeur ce qui permet de mettre les caractères entre parenthèses en couleur
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$11" Then
For Each c In Range("B11:H11")
        c.Font.ColorIndex = 1
        c.FormulaArray = _
         "=IFERROR(INDEX(Type,MATCH(1,(Ref=RC1)*(Montage=R10C),0)),"""")"
        c.Value = c.Value
        x = InStr(c, "(")
        y = InStr(c, ")")
            c.Characters(x, y).Font.ColorIndex = 3
    Next c
    End If
End Sub
 
Re

Essaye :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$11" Then
For Each c In Range("B11:H11")
On Error Resume Next
        c.Font.ColorIndex = 1
        c.FormulaArray = _
         "=IFERROR(INDEX(Type,MATCH(1,(Ref=RC1)*(Montage=R10C),0)),"""")"
        c.Value = c.Value
        x = InStr(c, "(")
        y = InStr(c, ")")
        c.Value = Left(c, x - 2) & Chr(10) & Right(c, Len(c) - x + 1) 
        c.Characters(x, y).Font.ColorIndex = 3
    Next c
    End If
End Sub
 
Ma boucle ci-dessous mais c'est pas très propre !





VB:
Private Sub Worksheet_Change(ByVal Target As Range)

For i = 11 To 21


If Target.Address = "$A$" & i Then
For Each c In Range("B" & i & ":" & "H" & i)
On Error Resume Next
        c.Font.ColorIndex = 1
        c.FormulaArray = _
         "=IFERROR(INDEX(Type,MATCH(1,(Ref=RC1)*(Montage=R10C),0)),"""")"
        c.Value = c.Value
        x = InStr(c, "(")
        y = InStr(c, ")")
        c.Value = Left(c, x - 2) & Chr(10) & Right(c, Len(c) - x + 1)
        c.Characters(x, y).Font.ColorIndex = 3
    Next c
    End If
   
   
    Next i

Si il y a mieux je prends !
 
Bonjour

Si tes Ref en colonne A sont déjà en place, il vaudrait mieux peut-être que la macro se déclenche au changement de date en B10
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" Then
For Each c In Range("B11:H20")
On Error Resume Next
        c.Font.ColorIndex = 1
        c.FormulaArray = _
         "=IFERROR(INDEX(Type,MATCH(1,(Ref=RC1)*(Montage=R10C),0)),"""")"
        c.Value = c.Value
        x = InStr(c, "(")
        y = InStr(c, ")")
        c.Value = Left(c, x - 2) & Chr(10) & Right(c, Len(c) - x + 1)
        c.Characters(x, y).Font.ColorIndex = 3
    Next c
    End If
End Sub
Autrement, en restant sur la modification de la Ref
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A11:A20")) Is Nothing And Target.Count = 1 Then
lg = Target.Row
For Each c In Range("B" & lg & ":H" & lg)
On Error Resume Next
        c.Font.ColorIndex = 1
        c.FormulaArray = _
         "=IFERROR(INDEX(Type,MATCH(1,(Ref=RC1)*(Montage=R10C),0)),"""")"
        c.Value = c.Value
        x = InStr(c, "(")
        y = InStr(c, ")")
        c.Value = Left(c, x - 2) & Chr(10) & Right(c, Len(c) - x + 1)
        c.Characters(x, y).Font.ColorIndex = 3
    Next c
    End If
End Sub
 
Bonjour,

Je me permets de revenir pour encore un petit d'aide, car je rencontre un petit bug :
Je me rends compte que j'ai des ratés.


En effet 1 fois sur 5, la ligne
VB:
 c.Value = c.Value
capture un zéro au lieu du bon résultat...
Pourtant le formule retourne le bon résultat (quand cette ligne est désactivée)


Vous avez une idée ?
 
Dernière édition:
Bonjour

Désolé pour le temps de réponse, je n'ai pas pu me connecter avant.
L'idéal serait de récupérer les heures en même temps que les noms dans ton code Load_Opérateurs
mais je ne sais pas le faire

Peux-tu essayer ce fichier ? Je le teste en avant et en arrière et cela semble "tenir"
 

Pièces jointes

- 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
131
  • Question Question
Microsoft 365 Imbrication
Réponses
2
Affichages
112
Réponses
4
Affichages
283
Retour