Const accent = "äâàéèêëùûüôöç" Const normal = "aaaeeeeuuuooc" Public Function rechercheCaracSpeciaux(ByVal TextRecherche As String, ByVal MotRecherche As String) As String Dim i As Long, pos As Long, pos2 As Long Dim j As Long Dim mot As String 'contient chaque mot de la phrase Dim newmot As String 'contient le mot sans accens (temporaire) Dim newrech As String 'contient le mot de recherche Dim valRet As String 'contient ce qui sera retourné en fin For i = 1 To Len(TextRecherche) pos = InStr(i, TextRecherche, " ", vbTextCompare) 'donne la position de l'espace If pos 0 Then: pos Len(TextRecherche) + 1 'si à la fin mot = Mid(TextRecherche, i, pos - i) 'selectionne le mot i = i + Len(mot) 'attribue la nouvelle valeur de comptage (rapidité) newmot = "" newrech = "" For j = 1 To Len(mot) 'pour le mot de la phrase pos2 = InStr(1, accent, Mid(mot, j, 1), vbTextCompare) If pos2 <> 0 Then newmot = newmot & Mid(normal, pos2, 1) Else newmot = newmot & Mid(mot, j, 1) End If Next j For j = 1 To Len(MotRecherche) 'pour la recherche pos2 = InStr(1, accent, Mid(MotRecherche, j, 1), vbTextCompare) If pos2 <> 0 Then newrech = newrech & Mid(normal, pos2, 1) Else newrech = newrech & Mid(MotRecherche, j, 1) End If Next j pos2 = InStr(1, newmot, newrech, vbTextCompare) If pos2 <> 0 Then 'si identique valRet = valRet & "" & Mid(TextRecherche, pos - Len(mot), Len(newrech)) & "" & Mid(TextRecherche, pos - Len(mot) + Len(newrech), Len(mot) - Len(newrech)) & " " Else valRet = valRet & Mid(TextRecherche, pos - Len(mot), Len(mot)) & " " End If Next i rechercheCaracSpeciaux = Trim(valRet) End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question