Code postaux en vrac

Bonjour,

Je cherche une formule simple pour mettre un point virgule en l'adresse, le code postal et la ville.

Ex: 3ruedurenard33000BLABLA

3ruedurenard;33000;BLABLA

Merci

Bonjour,

Pour moi, c'est infaisable avec une formule : adresse de différentes longueurs

Peut-être en VBA

A+

Bonjour,

Hello Bruno

Avec Power Query, on peut traiter ton unique exemple assez aisément... (Clic droit sur le Tableau Vert pour Actualiser)

Les entrées sont à faire dans le Tableau Structuré nommé T_Adr

Mais je redoute les 300 000 autres adresses...

Bon courage

6pq-adresse.xlsx (16.98 Ko)

Re-,

Euh, j'avais point fait attention à ce "détail"...

image

Avec ta version Excel, ça ne pourra pas le faire... (Power Query natif depuis 2016, et en Add-on gratuit sur 2010 et 2013)

Désolé...

Bonne soirée

Bonsoir Furiousxsi, BrunoM45, Cousinhub,

Avec une fonction personnalisée nommée Ad.

A placer dans un module du fichier. Faire ALT + F11 pour ouvrir l'éditeur VBA puis clic droit sur VBAproject... et choisir insertion Module

Function Ad(S As String)
For N = 6 To Len(S)
On Error Resume Next
If IsNumeric(Mid$(S, N, 5)) Then Exit For
Next N
Ad = Left(S, N - 1) & ";" & Mid$(S, N, 5) & ";" & Right(S, Len(S) - N - 4)
End Function

Pour un texte en A1, inscrire en B1 = Ad(A1).

A adapter selon la place des textes dans la feuille.

Le fichier doit être en extension xlsm et/ou sauvegardée dans ce type.

Principe: La fonction recherche une suite de 5 chiffres représentant un code postal à partir du 6ième caractère.

Afin d'éviter des numéros de rue (grandes villes) égales au moins à 4 caractères. Attention: Le code ne gère pas les cedex

Bonsoir X Cellus

Encore faut-il que le CP soit au format NNNNN j'ai déjà vu 1000 BOURG-en-BRESSE

Bonne soirée

A nouveau,

Encore faut-il que le CP soit au format NNNNN

Je pars du principe que le format postal est respecté. Selon les préconisations sur les enveloppes à 5 cases de la poste.

Mais toujours possible d'adapter en fonction de la réponse du demandeur et de son terme ... en vrac

Moi je pars toujours du principe qu'en ce bas monde, plus rien n'est respecté

Pour l'instant cela devrait lui donner 90% de recherche effective

Modification de la précédente fonction personnalisée

Afin de l'adapter à des codes postaux non respectés.

Function Ad(S As String)
CP = 0
For N = 6 To Len(S)
On Error Resume Next
If IsNumeric(Mid$(S, N, 5)) Then Exit For
If IsNumeric(Mid$(S, N, 4)) Then CP = 1: Exit For
Next N
Ad = Left(S, N - 1) & ";" & Mid$(S, N, 5-CP) & ";" & Right(S, Len(S) - N - 4 + CP)
End Function

Si un code postal en 5 chiffres est trouvé la deuxième condition If IsNumeric ne sera pas testée.

Sinon elle sera testée et la longueur du code postal sera pris en compte en sortie de fonction.

Bonsoir,

Je vais tester vos solutions et vous ferez un retour du résultat.

à bientôt

Voila j'ai testé la fonction fonctionne très bien sauf que la virgule est pas au bon endroit: je veux pas bidouillé le code donc je vous montre un exemple:

23 rue des vignes;5900;0Roubaix

la virgule du code postal est décalé d'un rang ;)

Bonsoir Furiousxsi,

Tu as pris quelle fonction, la première ou celle corrigée.

Suite,

Parce que sur la dernière aucune différence.

image

ou encore

image

j'ai testé les 2 ...

Bonjour à tous,

pour l'amusement :
=GAUCHE(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$254);1)));0)-5)&";"&STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$254);1)));0)-4;5)&";"&STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$254);1)));0)+1;50)

image

eric

bonsoir

test de faisabilité

cordialement

9furious.xlsx (13.30 Ko)

C'est bon la première fonction est la bonne. j'avais un espace entre le code postal et la ville ça a décalé le tout c'est résolu.

Merci à tous

Je rencontre cependant un petit soucis quand une adresse comporte un n° de rue avec 2 nombre ça se complique

333 avenue des chats 59000 roubaix me donne 333 a;venue des chats 59000 roubaix

parc contre les rue avec 1 numéro a 1 ou 2 nombre pas de soucis ....

Bonjour Furiousxsi,

La fonction était réalisé pour des adresses sans espace. Voir mon message de Lundi à 19:21

Donc s'il y a plusieurs espaces il faut modifier la fonction.

Function Ad(S As String)
CP = 0
S = Application.Substitute(S, " ", "")
For N = 6 To Len(S)
On Error Resume Next
If IsNumeric(Mid$(S, N, 5)) Then Exit For
If IsNumeric(Mid$(S, N, 4)) Then CP = 1: Exit For
Next N
Ad = Left(S, N - 1) & ";" & Mid$(S, N, 5 - CP) & ";" & Right(S, Len(S) - N - 4 + CP)
End Function
image
Rechercher des sujets similaires à "code postaux vrac"