Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

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

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.
 

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
 

GALOUGALOU

XLDnaute Accro
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
 
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 Accro
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
 

Pièces jointes

  • extraire adresse par formule.xlsm
    20 KB · Affichages: 16

Discussions similaires

Réponses
7
Affichages
591
Réponses
12
Affichages
453
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…