Trier une adresse postale

Résolu
Moomrah Messages postés 19 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 30 avril 2007 - 27 déc. 2005 à 14:14
Moomrah Messages postés 19 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 30 avril 2007 - 27 déc. 2005 à 16:44
Bonjour,

Je cherche un moyen simple de trier une adresse postale ex(12 Rue des Pois Cassés 54221 Patin Coufin)
et récupérer l'adresse, la code postal et la ville séparément.
Je ne vois pas comment réaliser ca simplement.
Si quelqu'un a une idée ca serait sympa merci.

3 réponses

AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
27 déc. 2005 à 15:02
Salut, la solution serait de retrouver dans ton adresse, le code
postal, puisque celui-ci sépare l'adresse de la ville, et qu'il est le
plus simple à retrouver puisqu'il est forcément composé de 5 chiffres.
Ce que je te suggère c'est de balayer l'adresse complète. Une fois que
ton programme aura remarqué 5 chiffres qui se suivent, tu auras non
seulement retrouvé ton code postal, mais tu sauras aussi jusqu'où va
l'adresses et où commence la ville.









Dim AdresseTotale As String: AdresseTotale = "12 Rue des Pois Cassés 54221 Patin Coufin"

Dim Adresse As String, CodePostal As String, Ville As String

Dim i As Integer, j As Integer



For i = 1 To Len(AdresseTotale) - 5

If TestChiffre(Mid(AdresseTotale, i, 1)) And
TestChiffre(Mid(AdresseTotale, i + 1, 1)) And
TestChiffre(Mid(AdresseTotale, i + 2, 1)) And
TestChiffre(Mid(AdresseTotale, i + 3, 1)) And
TestChiffre(Mid(AdresseTotale, i + 4, 1)) Then Exit For

Next i



Adresse = Left(AdresseTotale, i - 2)

CodePostal = Mid(AdresseTotale, i, 5)

Ville = Right(AdresseTotale, Len(AdresseTotale) - i - 5)





Avec:

Private Function TestChiffre(Valeur As String) As Boolean

If Valeur >= "0" And Valeur <= "9" Then TestChiffre = True Else TestChiffre = False

End Function


Tchô
AnteManoclis
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
27 déc. 2005 à 15:03
En partant du principe qu'il n'y a pas de chiffres dans le nom d'une ville (à vérifier, notamment s'il y a un Cedex !!)

Dim AdrFull As String,Adr As String, Ville As String, CP As String
Dim i As Long

AdrFull= "12 Rue des Pois Cassés 54221 Patin Coufin"
i = len(AdrFull)
While Not IsNumeric(Mid$(AdrFull,i,1))
i = i -1
Wend
' i donne l'index du dernier chiffre du CP
Ville = Trim$(Right$(AdrFull,Len(AdrFull)-i))
AdrFull = Left$(AdrFull,i)
While Not Mid$(AdrFull,i,1) = " "
i = i -1
Wend
' i donne l'index de l'espace juste avant le CP
CP = Trim$(Right$(AdrFull,Len(AdrFull)-i))
Adr = Trim$(Left$(AdrFull,i))

MsgBox "~" & Adr & "~"
MsgBox "~" & CP & "~"
MsgBox "~" & Ville & "~"

CR
3
Moomrah Messages postés 19 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 30 avril 2007
27 déc. 2005 à 16:44
Merci a tous les 2 pour m'avoir repondu et résolu mon probléme en si peu de temp alors que ca fait un moment que je me casse la tête :)
0
Rejoignez-nous