Sub Villes_Lettre()
Dim tablo, lettre$, d As Object, e
tablo = [A1:B50] 'à adapter
lettre = "P" 'majuscule, modifiable
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each e In tablo
If UCase(Left(e, 1)) = lettre Then d(e) = ""
Next
MsgBox IIf(d.Count, Join(d.keys, vbLf), "Aucune ville"), , "Villes lettre " & lettre & IIf(d.Count, " : " & d.Count, "")
End Sub