Function NettoyerTexteComplet(ByVal Texte As String, ws As Worksheet) As String
Dim i As Integer
Dim CharCode As Integer
Dim TexteNettoye As String
TexteNettoye = Texte
' Remplacer le mot à supprimer par un espace unique
TexteNettoye = Replace(TexteNettoye, ws.Range("B4").Value, " ")
' Remplacer les caractères spéciaux par des espaces
TexteNettoye = Replace(TexteNettoye, vbLf, " ")
TexteNettoye = Replace(TexteNettoye, vbCr, " ")
TexteNettoye = Replace(TexteNettoye, vbTab, " ")
' Supprimer les caractères non imprimables restants
For i = 1 To Len(TexteNettoye)
CharCode = Asc(Mid(TexteNettoye, i, 1))
If CharCode >= 32 And CharCode <> 127 Then
NettoyerTexteComplet = NettoyerTexteComplet & Mid(TexteNettoye, i, 1)
End If
Next i
' Éliminer les espaces multiples tout en conservant les séparations naturelles
NettoyerTexteComplet = Trim(Replace(NettoyerTexteComplet, " ", " "))
End Function
Sub AppliquerNettoyage()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Set ws = ThisWorkbook.Sheets("Feuil1") ' À remplacer par le vrai nom
Set rng = ws.Range("D9:D32")
' Appliquer le nettoyage à chaque cellule de la plage
For Each cell In rng
cell.Offset(0, 5).Value = NettoyerTexteComplet(cell.Value, ws)
Next cell
End Sub