Option Explicit
Sub test()
Dim chain As String
chain = "blablabla@_toto_')titi4586_=#@ hfdh...cbzjdcn:fer;fgt'g/fefefe"
MsgBox ReplaceSpecChar(chain) 'replace tout les caractères speciaux
MsgBox ReplaceSpecChar(chain, RegularSpace:=True) 'replace tout les caractères speciaux et régule les espaces consécutifs
MsgBox ReplaceSpecChar(chain, "_") 'replace tout les caractères speciaux par un caractère
MsgBox ReplaceSpecChar(chain, ExceptedChar:=".@_") 'replace tout les caractères speciaux en exeptant certains
End Sub
Function ReplaceSpecChar(chain As String, _
Optional CharReplace As String = " ", _
Optional ExceptedChar As String = "", _
Optional RegularSpace As Boolean = False)
Dim T As String, I&
For I = 1 To Len(chain)
Select Case Asc(Mid(chain, I, 1))
Case 48 To 57, 65 To 90, 97 To 122, Asc(Chr(160))
T = T & Mid(chain, I, 1)
Case Else
If ExceptedChar Like "*" & Mid(chain, I, 1) & "*" Then
T = T & Mid(chain, I, 1)
Else
T = T & CharReplace
End If
End Select
Next
If RegularSpace Then T = Application.Trim(T)
ReplaceSpecChar = T
End Function