eriiic a écrit :
Bonjour,
L'adresse est découpée en mot séparés par des espaces.
"l'école" est un seul mot.
Il faudrait une 2nde boucle sur chaque mot pour splitter sur l'apostrophe ce qui ferait un peu lourd.
Je préfère traiter en dur dans le code :
Sub MefAdr()
Dim data As Variant, adr As Variant
Dim Dict, c As Variant, cel As Range, pl() As Variant
Dim clé As String, i As Long, tmp As String
' dictionnaire des exceptions
Set Dict = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Worksheets("Listes")
pl = .Range("a2", .Cells(Rows.Count, "A").End(xlUp)).Value
For Each c In pl
Dict("µ" & LCase(c) & "µ") = c
Next c
End With
'
For Each cel In Range("T2", Cells(Rows.Count, "T").End(xlUp))
' nom propre
adr = Replace(Application.Proper(cel), " L'", " l ")
' exceptions
adr = Split(Trim(adr), " ")
For i = 0 To UBound(adr)
clé = "µ" & LCase(adr(i)) & "µ"
If clé <> "" And Dict.exists(clé) Then adr(i) = Dict(clé)
Next i
'reconstitution
tmp = ""
For i = 0 To UBound(adr)
tmp = tmp & " " & adr(i)
Next i
cel = Replace(Mid(tmp, 2), " l ", " l'")
Next cel
End Sub
Pas besoin de mettre l dans la liste
eric
Impeccable, merci Eric
J'ai voulu modifier pour exclure aussi les " d' " alors j'ai customisé ces deux lignes comme ça :
adr = Replace(Application.Proper(cel), " L'", " l ", " D'", " d ")
cel = Replace(Mid(tmp, 2), " l ", " l'", " d ", " d'")
Mais ça ne marche pas (j'aurais essayé !). As tu la solution ?