Le mieux est de vérifier les chaines de caractères dans le fichier Excel et d'utiliser les chaines sans caractères spéciaux dans un nouveau champ.
Pour cela, j'ai créé une fonction CaracteresSpeciaux qui identifie les caractères différents des chiffres et des lettres de l'alphabet majuscules et minuscules ainsi que les caractères espaces.
Function CaracteresSpeciaux(ByVal ChaineATraiter As String) As String
Dim I As Integer
Dim J As Long, NumChr As Long
Dim Caractere As String
CaracteresSpeciaux = ""
For I = 1 To Len(ChaineATraiter)
Caractere = Mid(ChaineATraiter, I, 1)
For J = 0 To 255
If Caractere = Chr(J) Then
NumChr = J
Exit For
End If
Next J
Select Case NumChr
Case 32, 48 To 57, 65 To 90, 97 To 122, 160
Case Else
CaracteresSpeciaux = CaracteresSpeciaux & Caractere & " "
End Select
Next I
End Function
Cette fonction peut être modifiée pour justement éliminer ces caractères spéciaux :
Function RemplaceCaracteresSpeciaux(ByVal ChaineATraiter As String) As String
Dim I As Integer
Dim J As Long, NumChr As Long
Dim Caractere As String
RemplaceCaracteresSpeciaux = ""
For I = 1 To Len(ChaineATraiter)
Caractere = Mid(ChaineATraiter, I, 1)
For J = 0 To 255
If Caractere = Chr(J) Then
NumChr = J
Exit For
End If
Next J
Select Case NumChr
Case 32, 48 To 57, 65 To 90, 97 To 122, 160
RemplaceCaracteresSpeciaux = RemplaceCaracteresSpeciaux & Caractere
Case Else
RemplaceCaracteresSpeciaux = RemplaceCaracteresSpeciaux & " "
End Select
Next I
End Function
En revanche, la suppression des caractères peut engendrer un problème d'homonymie sur les nouvelles chaines, il faut donc le vérifier avec une fonction Nb.si
Le fichier exemple :