Larry a été chargé de remplacer ou d’ajouter du texte à chaque cellule d’une colonne dans plusieurs classeurs Excel. Le problème est que ce nouveau texte doit être souligné et d’une couleur différente. Recherchez et remplacez les soulignements et colore tout le texte dans les cellules, mais Larry a besoin de la mise en forme pour s’appliquer uniquement au texte ajouté.

Si vous ne devez effectuer ce genre de tâche que quelques fois, la solution la plus simple peut être de demander l’aide de Microsoft Word. Vous pouvez copier la plage de cellules dans un document Word, utiliser les fonctionnalités Rechercher et remplacer de Word pour apporter les modifications de mise en forme, puis recopier le texte dans votre feuille de calcul Excel.

Si vous devez effectuer cette tâche plus souvent, la meilleure approche consiste à utiliser une macro. La macro suivante peut être utilisée pour modifier le texte dans les cellules d’une colonne ou pour ajouter du texte aux cellules.

Sub AddFormatedText()

Dim K As Long     Dim lCol As Long     Dim LastRow As Long     Dim sFind As String     Dim sReplace As String     Dim FullCells As Range     Dim c As Range

' Column to work on     lCol = 1

' Text to be replaced in the cell     ' If this variable is empty, then     ' the contents of sReplace are added     ' to the end of the cell     sFind = ""



' Text to replace sFind or to add to the cell     sReplace = "More Text"



' Find last row in column A     LastRow = Cells(Rows.Count, "A").End(xlUp).Row

' Set range to check     Set FullCells = Range(Cells(1, lCol), Cells(LastRow, lCol))

' Start looking through each cell     For Each c In FullCells         K = 0         ' Only check if there is not a formula in the cell         ' and if the cell has some text in it         If Not c.HasFormula And Len(c.Text) > 0 Then             If sFind > "" Then                 ' Replace first found instance of text in sFind                 K = InStr(c.Text, sFind)

If K > 0 Then                     c = Left(c.Text, K - 1) & sReplace & _                       Mid(c.Text, K + Len(sFind))

End If             Else                 K = Len(c.Text)

' Add the text to the cell (plus a space)

c = c & " " & sReplace                 ' Adjust starting position for formatting                 K = K + 2             End If         End If

' Format the added text, if any         If K > 0 Then             With c.Characters(Start:=K, Length:=Len(sReplace)).Font                 .Underline = xlUnderlineStyleSingle                 .Color = vbRed             End With         End If     Next c End Sub

Vous devez effectuer trois modifications pour utiliser la macro. La première consiste à vous assurer que la variable lCol est définie sur le numéro de colonne que vous souhaitez affecter. Deuxièmement, vous devez définir sFind égal au texte que vous souhaitez rechercher et remplacer dans les cellules. Vous pouvez, si vous le souhaitez, laisser sFind vide (comme ci-dessus) si vous souhaitez simplement ajouter du texte à la cellule.

Enfin, vous devez définir sReplace égal à ce que vous voulez remplacer par sFind ou à ce que vous souhaitez ajouter aux cellules.

La macro examine chaque cellule de la colonne spécifiée et, si la cellule ne contient pas de formule et contient déjà du texte, elle remplace ou ajoute votre texte. Enfin, si une modification a été apportée à la cellule, tout ce qui était dans sReplace est souligné et rendu rouge. Notez que si une modification est apportée à la cellule, toute mise en forme existante dans la cellule est remplacée par la modification en cours.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (9302) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.