Extraction d'un code postal dans une adresse

E

Eric D

Guest
Bonjour à tous,

Je souhaiterais extraire un code postal à (5 chiffres) d'une adresse complète.

Autrement dit, placer en colonne B le code postal contenu dans l'adresse située en colonne A.

La contrainte est que ce code postal n'est pas toujours placé à un nombre de caractère fixe de la droite ou de la gauche de la chaîne de caractères.

Si vous avez la formule magique dans votre hotte, je vous serai reconnaissant de la glisser dans ma cheminée !

Merci d'avance,
Eric
 
A

andré

Guest
Salut Eric D,

Je ne vois pas de solution à ton problème, car un code postal inclus dans une chaîne de caractères est considéré par XL comme étant du texte.

Pourtant si tes adresses ont des renvois à la ligne (le nom, la rue, la ville),
je crois qu'il y a moyen d'en extraire le code postal, en extrayant les 5 premiers caractères après le deuxième renvoi à la ligne (code = 10).

Si c'est le cas, peux-tu mettre un exemple en pièce jointe ?

A défaut, par VAB en extrayant toutes les chaînes de 5 caractères dont les codes se situent entre 47 et 58.
Mais là c'est trop fort pour moi !

Ândré.
 
D

dg

Guest
Bonjour

le code suivant adapté d'un code trouvé sur un site canadien permet d'extraire une chaîne de 5 chiffres consécutifs.

Il faut encore le travailler mais le plus gros du travail est fait.

pour essayer il suffit de mettre une adresse en A6, le code postal probable s'affichera en b6

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ctr As Long
Dim MotTrouvé As Boolean
MotTrouve = False

texte = Range("A6").Value

mot = ""

For ctr = 1 To Len(texte)
Select Case Mid(texte, ctr, 1)
Case "0" To "9"
MotTrouve = True
mot = mot & Mid(texte, ctr, 1)
Case " ", Chr(13), Chr(10):
If MotTrouve Then

If Len(mot) = 5 Then
Range("B6").Value = Mid(texte, ctr - 5, 5)
End If


MotTrouve = False
mot = ""
End If
End Select

Next ctr

End Sub


Cordialement
 

Pièces jointes

  • codepost.zip
    7.5 KB · Affichages: 133
  • codepost.zip
    7.5 KB · Affichages: 121
  • codepost.zip
    7.5 KB · Affichages: 129
P

PhiBou

Guest
Bonjour le fil, le Forum

Cette fonction matricielle recherche un nombre de 5 chiffres dans l'adresse en cellule A1 (donc le code postal) :

=SOMME(SI(ESTERREUR(STXT(A1;LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*10000+STXT(A1;1+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*1000+STXT(A1;2+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*100+STXT(A1;3+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*10+STXT(A1;4+LIGNE(DECALER($G$1;;;NBCAR(A1)));1));0;STXT(A1;LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*10000+STXT(A1;1+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*1000+STXT(A1;2+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*100+STXT(A1;3+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)*10+STXT(A1;4+LIGNE(DECALER($G$1;;;NBCAR(A1)));1)))

A valider par Shift + CTRL + Entrée

Mettre la cellule de calcul au format personnalisé 00000 (pour les départements < 10)

Cette fonction ne donnera pas le résultat escompté si nous avons dans l'adresse plusieurs nombres de 5 chiffres ou plus.

Joyeuses fêtes à tous

PhiBou
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 979
Membres
103 419
dernier inscrit
mk29