Macro qui retourne une phrase et qui colore des caractères

Bonjour,

je voudrai créer une macro qui retourne une phrase à partir de données dans une colonne. Par ex, je dispose dans une colonne (A1) du prix payé par une personne et dans une autre (B1) le montant qui lui reste à payer. En C1, la macro afficherait : "Bonjour, vous avez payé X, il vous reste encore à payer Y".

Je sais que cette manipulation peut se faire facilement avec le & et sans macro, néanmoins avec la seconde étape je ne vois pas comment faire.

En effet, j'aimerai que les X et Y apparaissent dans la phrase en rouge et gras.

Je pense qu'il faut créer une macro qui retourne la phrase et affiche les chiffres en rouge et gras plutôt que de faire en première partie une colonne qui écrit la phrase (sans macro, juste avec le &) puis une macro qui colorie les nombres, car ces derniers ne sont jamais les mêmes et leur longueur peut varier (et donc modifier la place de chaque caractère dans la phrase).

je vous remercie d'avance pour votre aide,

Isaure

Bonjour,

met à jour C sur saisie en A ou B :

Private Sub Worksheet_Change(ByVal Target As Range)
    '"Bonjour, vous avez payé X, il vous reste encore à payer Y".
    Dim pl As Range, c As Range, s1 As String, s2 As String
    Set pl = Intersect(Target, [A:B])
    If Not pl Is Nothing Then
        If Not Intersect(Target, [A:B]) Is Nothing Then
            For Each c In Intersect(pl.EntireRow, [A:A])
                If IsNumeric(c) And IsNumeric(c.Offset(, 1)) And c <> "" And c.Offset(, 1) <> "" Then
                    s1 = Format(c, "0.00")
                    s2 = Format(c.Offset(, 1), "0.00")
                    Application.EnableEvents = False
                    c.Offset(, 2) = "Bonjour, vous avez payé " & s1 & ", il vous reste encore à payer " & s2
                    Application.EnableEvents = True
                    With c.Offset(, 2).Characters(Start:=25, Length:=Len(s1)).Font
                        .FontStyle = "Gras"
                        .Color = vbRed
                    End With
                    With c.Offset(, 2).Characters(Start:=Len(c.Offset(, 2).Value) - Len(s2) + 1, Length:=Len(s2)).Font
                        .FontStyle = "Gras"
                        .Color = vbRed
                    End With
                End If
            Next c
        End If
    End If
End Sub

à mettre dans le module de la feuille.

eric

Edit 12:50 : correction code

Bonjour Eric,

Merci pour votre retour. Néanmoins je n'arrive pas à exécuter votre programme et comme je ne suis pas une pro en VBA

9ex-vba.xlsx (22.04 Ko)

Déjà précise :

  • si tu veux une mise à jour à chaque saisie (et donc A et B sont bien des saisies, s'il y a des formules ce sont les antécédents servants à leur calcul qu'il faut surveiller)
  • si tu veux une mise à jour de tout C au coup par coup.
eric

oui, en effet je souhaite que lorsque A et B sont modifiés la colonne C se modifie elle aussi

Voilà. Il faut enregistrer en .xlsm pour conserver les macros.

Revalide A2 ou B2 pour faire la mise à jour.

Ca peut être un copié-collé de plusieurs valeurs, toutes les lignes seront traitées.

J'ai corrigé un peu le code et mis la modif dans le post précédent.

eric

12ex-vba.xlsm (16.20 Ko)

Super, merci beaucoup à vous !

Isaure

Rechercher des sujets similaires à "macro qui retourne phrase colore caracteres"