Microsoft 365 [Résolu] Separer Nom, Ligne d'adresse, Cp et Ville en VBA

McMidou84

XLDnaute Nouveau
Bonjour à tous,

Je sollicite votre aide pour trouver une macro capable de séparer par colonne une adresse du type :

M TRUQUE NATHANEL SYLVESTRE RUPERT 0012 IMPASSE DU SENS UNIQUE 27040 FAINFOND

Pour l'instant j'essaye avec cette logique (qui est une formule qui ne fonctionne pas encore ) :

Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
Dim c As Range, t As Integer
Set c = Range("A2")
Do While c <> ""
For t = InStr(InStr(c, " "), c, " ") To Len(c)
Select Case Mid(c, t, 1)
Case "0" To "9"
Exit For
End Select
Next t
c(1, 2) = Mid(c, 1, t - 2)
c(1, 3) = Mid(c, t, 500)
Set c = c(2, 1)
Loop

End Sub

Private Sub CommandButton1_Click()
iR = Cells(65535, 1).End(xlUp).Row
For i = 1 To iR
Codep = ADCOD(Cells(i, 1))
iPos = InStr(Cells(i, 1), Codep)
Cells(i, 2) = Left(Cells(i, 1), iPos - 1)
Cells(i, 3) = Codep
Cells(i, 4) = Mid(Cells(i, 1), iPos + 6)
Next
End Sub

Private Function ADCOD(c)
Application.Volatile
Set obj = CreateObject("vbscript.regexp")
obj.Pattern = "\d{5}"
Set a = obj.Execute(c)
If a.Count > 0 Then ADCOD = a(0) Else codepostal = ""
End Function


Pouvez vous, s'il vous plait, me dire comment faire en sorte qu'elle fonctionne?

En vous remerciant par avance,

Bien cordialement

Midou
 

McMidou84

XLDnaute Nouveau
Merci,

J'ai essayé mais cela ne fonctionne pas bien avec ce genre d'adresses :

M. ou Mme PATATE 4 Rue Montesquieu C 325 95100 ARGENTEUIL

D'ou mon idée de "mixer" 2 codes

Merçi
 

patricktoulon

XLDnaute Barbatruc
bonjour
si tes adresses sont toujours dans le même ordre

M. ou Mme PATATE 4 Rue Montesquieu C 325 95100 ARGENTEUIL
civilité /nom /adresse/ code postal/ ville

il te suffit de repérer le code postal qui sauf erreur de ma part en metropole comporte 5 chiffres
et de repérer mr ou mme ou melle
donc tout ce qui est entre civilité et cp est le nom et l'adresse
tout ce qui après cp est la ville
il te reste a déterminer le nom dans la portion nom et adresse
ce qui ne sera pas une sinécure avec des noms composés ;)
a moins que tes adresses commencent toujours par le n° de rue/chemin/boulevard etc.....
 

McMidou84

XLDnaute Nouveau
bonjour
si tes adresses sont toujours dans le même ordre

M. ou Mme PATATE 4 Rue Montesquieu C 325 95100 ARGENTEUIL
civilité /nom /adresse/ code postal/ ville

il te suffit de repérer le code postal qui sauf erreur de ma part en metropole comporte 5 chiffres
et de repérer mr ou mme ou melle
donc tout ce qui est entre civilité et cp est le nom et l'adresse
tout ce qui après cp est la ville
il te reste a déterminer le nom dans la portion nom et adresse
ce qui ne sera pas une sinécure avec des noms composés ;)
a moins que tes adresses commencent toujours par le n° de rue/chemin/boulevard etc.....
Oui mes adresses (par chance) commencent toute par un numero de rue :)
 

jmfmarques

XLDnaute Accro
Bonjour
Et ce sera ma seule intervention dans cette discussion :
Oui mes adresses (par chance) commencent toute par un numero de rue
En développement informatique, on ne compte JAMAIS sur la "chance". Et ce n'est pas parce-qu'aucune des données présentes n'est "différente", que tel sera le cas "demain" ! Attendez de "tomber sur une adresse du genre .... "km 3, route de Lyon...", ou encore (entre autres) "lieu dit machin-chouette ..." etc ...
Je ne connais personnellement aucun outil capable, dans ce domaine, de remplacer l' "appréciation humaine" !!! Et encore : dans certains cas, même l'appréciation humaine ne suffit pas à "transposer" sans risque.
Je n'ai rien d'autre à ajouter.
 

patricktoulon

XLDnaute Barbatruc
bonjour jmfmarques
REGEX ;)
BIEN que 100% c'est pas garanti même avec avec des pattern conditionnels béton
pour civilité et cp j'ai
 

jmfmarques

XLDnaute Accro
pour civilité et cp j'ai
Et alors ?
Que feras de ce qu'il y a "entre" ces deux "données" ? Et qui pourrait être
"Emile Dupont. Ferme Les Gazelles Joyeuses, km 25" ?
ou encore :
Pas de civilité du tout !
Genre :
"Banque Profiteurs et Cie" ou "Sté Machin" ou (tout court) : "Machin" ?
Il est temps de commencer à y penser. Cela aidera à remettre un peu les pieds sur terre.
PS : je déplore vraiment d'avoir eu à faire un nouveau message pour ce qui (tout au moins pour moi) relevait du bon sens le plus élémentaire.
Continuez tous sans moi.
Amtitiés
 

patricktoulon

XLDnaute Barbatruc
je suis en train de le faire
et comme je l'ai dis a condition!!!! que le format soit respecté
comme suit

M. ou Mme PATATE 4 Rue Montesquieu C 325 95100 ARGENTEUIL
Melle victorine jupette 655 avenue du moulin 5420 pays de la boulette
civilité /nometouprenom /adresse/ code postal/ ville
 

GALOUGALOU

XLDnaute Impliqué
bonjour le forum bonjour le fil
la normalisation existe pour faciliter le travail de toute entreprise et administration.
en partant du principe que l'adresse est normalisée, j'attends impatiemment la solution de patricktoulon
cordialement
galougalou
 

patricktoulon

XLDnaute Barbatruc
re
regex
patern du CP
VB:
pattern="(\d{5}) ';' on prendra le matchs( matchs.count-1)
patterne de civilité à la neuneu
VB:
 .Pattern = "^(M. ou Mme|M. et Mme|Mr et Mme|M.|Mr|Melle|M.me|Monsieur|Madamme|Société|Entreprise) "
numero de rue
VB:
pattern="(\d{1,4}) ';' on prendra le matchs(0)
le reste formule
wagadougou ;)
comme je l'ai dis si le format est conforme a la demande
demo3.gif
 
Dernière édition:

jmfmarques

XLDnaute Accro
Bonjour GALOUGALOU
en partant du principe que l'adresse est normalisée
Pour être plus précis :
La normalisation peut différer d'un pays à l'autre
En France, elle est définie par AFNOR NF Z 10-011 et :
- ne contient bien évidemment pas la totalité de l'adresse dans un seul champ

- distingue la structure B to C (adresse d'un particulier) de la structure B to B (adresse d'une personne morale). La structure B to C ne comporte aucune civilité, mais directement le nom de la personne morale (ex : SOGABA, M.A.E.C., etc ...)

- dans un cas comme dans l'autre , les éléments de la structure (1 par ligne) doivent respecter un ordre précis.
 

patricktoulon

XLDnaute Barbatruc
re
a une formule indigeste ou même une chatte n'y retrouverais pas ces petits et certainement moins efficiente qu'un regex
en vba par contre avec un regex les choses deviennent plus simples
donnez moi un exemple de société avec le résultat souhaité ou comme il doit etre ;)
 

GALOUGALOU

XLDnaute Impliqué
bonjour mcmidou84 bonjour le fil
j'ai trouvé sur le site ce lien de 2011
à partir de cela, avec la formule du fil #20 jnp, j'ai essayé un classeur exemple
le nom et l'adresse sont mélangés, mais le code postal et la ville (et le cedex) sont isolés
peut-être l’ambryon d'une solution
cordialement
galougalou
 

Fichiers joints

GALOUGALOU

XLDnaute Impliqué
bonsoir staple 1600, bonsoir le fil
le lien que tu nous confies nous permet d’accéder au fichier base adresse nationale, qui sert à établir des points de géocodage à destination de fabricant de carte, de gestion GPS, d'organisation des secours, d'édition de code hexaclé dans le cadre de l'installation de la fibre.
en pièce jointe toutes les informations a intégré à un fichier adresse.
je ne pense pas que se soit d'un grand secours dans le but d'établir un mailing
mais peut-être que je me trompe. je ne demande qu'a être éclairé.
cordialement
galougalou
 

Fichiers joints

GALOUGALOU

XLDnaute Impliqué
je vais faire mon bête (j'adore ça, il ne faut pas m'en vouloir)
commune de aiguilhe, a la même adresse il peut y avoir plusieurs destinataires, (surtout dans le cas d'un immeuble) et le clic sur la commune nous donne les point de géolocalisation, pas les noms patronymique. (je triche j'ai eu l'occasion de remplir ce fichier)
@+
 

Staple1600

XLDnaute Barbatruc
Re

Personne n'est bête ici
(voir la charte du forum)
Je voulais juste informer qu'il existe ce site avec des adresses normalisées
(avec téléchargement possible et gratuit)
Ce qui évite les erreurs de saisie de fichiers adresse.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas