Рабочий код ОП удален из вопроса и размещен в форме ответа:
Dim vaCitiesA As Variant
Dim xSelection As Range
Dim xCity As String
Dim rest As String
vaCitiesA = Array("Hody", "Hour", "Houx", "HOVE", "Hyon", "Impe", "Izel", "Jeuk", "Kain", "Laar", "Lauw", "LEDE", "Leke", "LENS", "Leut", "LIER", "LINT", "Mark", "Mazy", _
"Mean", "Meer", "Mere", "Meux", "Moen", "Moha", "MONS", "Mont", "Mont", "Muno", "NATO", "NIEL", "Nimy", "OHEY", "Oizy", "OLEN", "OLNE", "Omal", "Onoz", _
"Orcq", "Oret", "Paal", "PECQ", "PEER", "Perk", "Redu", "Reet", "Roly", "Roux", "RTBF", "Seny", "Soye", "Suxy", "Thon", "Thys", "Velm", "VISE", "Vivy", _
"Waha", "Ways", "Werm", "ZELE", "ANS", "ATH", "Aye", "Bra", "Eke", "Ere", "Goe", "HAM", "HUY", "Lot", "Mal", "MOL", "Ogy", "Pry", "Roy", _
"Scy", "SOC", "Soy", "SPA", "Spy", "VRT", "VTM", "AS", "Lo", "My", "On")
Set xSelection = Application.Selection
For Each Rng In xSelection
Dim allMatches As Object
Dim objRegExp As Object
'Initializing an Instance
Set objRegExp = CreateObject("VBScript.RegExp")
'Setting the Properties
With objRegExp
.Global = True
.IgnoreCase = True
End With
xCity = ""
rest = Rng.Value
'a
rest = Replace(rest, "à", "a")
rest = Replace(rest, "â", "a")
rest = Replace(rest, "á", "a")
rest = Replace(rest, "À", "A")
rest = Replace(rest, "Â", "A")
rest = Replace(rest, "Á", "A")
'e
rest = Replace(rest, "ë", "e")
rest = Replace(rest, "é", "e")
rest = Replace(rest, "è", "e")
rest = Replace(rest, "ê", "e")
rest = Replace(rest, "Ë", "E")
rest = Replace(rest, "É", "E")
rest = Replace(rest, "È", "E")
rest = Replace(rest, "Ê", "E")
'o
rest = Replace(rest, "ö", "o")
rest = Replace(rest, "ô", "o")
rest = Replace(rest, "Ö", "O")
rest = Replace(rest, "Ô", "O")
'u
rest = Replace(rest, "ü", "u")
rest = Replace(rest, "û", "u")
rest = Replace(rest, "ù", "u")
rest = Replace(rest, "ú", "u")
rest = Replace(rest, "Ü", "U")
rest = Replace(rest, "Û", "U")
rest = Replace(rest, "Ù", "U")
rest = Replace(rest, "Ú", "U")
'i
rest = Replace(rest, "ï", "i")
rest = Replace(rest, "Ï", "I")
'c
rest = Replace(rest, "ç", "c")
rest = Replace(rest, "Ç", "C")
'special
rest = Replace(rest, "'", "")
rest = Replace(rest, "-", " ")
Text = LCase(rest)
For i = LBound(vaCitiesA) To UBound(vaCitiesA)
'''''''''''''''''''''''''''''''''''''
objRegExp.Pattern = "(^|[^a-zA-ZàáâäÀÁÂÄèéêëÈÉÊËôöÔÖùúûüÙÚÛÜïÏçÇ])" & LCase(vaCitiesG(i)) & "(?![a-zA-ZàáâäÀÁÂÄèéêëÈÉÊËôöÔÖùúûüÙÚÛÜïÏçÇ])"
Set allMatches = objRegExp.Execute(Text)
If objRegExp.Test(Text) Then
xCity = vaCitiesA(i)
Exit For
End If
''''''''''''''''''''''''''''''''''''''''
Next i
If xCity <> "" Then
'for the moment, I choose last match, but could be problematic if there is a short city like 'ON' in front of the street
x = allMatches.Count - 1
lCityPos = allMatches(x).FirstIndex
rest = Replace(rest, Mid(rest, lCityPos + 1, Len(xCity) + 1), "", , 1)
End If