Séparer l'adresse, le code postal et la ville ?

  • Initiateur de la discussion Initiateur de la discussion abouam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

abouam

XLDnaute Junior
Bonjour et BONNE et HEUREUSE ANNÉE à vous tous !

je possède un tabelau qui contient des lignes comme suit :

rue de Siam 07100 Brest

Je souhaite avoir 3 colonnes qui auront comme titre :
Adresse
Code postale
Ville

Donc une extraction de données.
Voici mon fichier exemple
Merci
 

Pièces jointes

Re : Séparer l'adresse, le code postal et la ville ?

Re…
Bonjour à tous, bonjour Roger2327

Pour notre culture, pourquoi ce "décervelage" en bas de ton post ?

Merci

@ plus
Tibo a répondu ce qu'il faut. Esprit fin et perspicace, il a saisi qu'il s'agit d'un affaire très-sérieuse, et je l'en félicite.​
Bonne soirée.

ROGER2327
#4874


Mardi 17 Décervelage 138 (Saint Mandrin, poète et philosophe, SQ)
25 Nivôse An CCXIX
2011-W02-5T15:41:06Z
 
Re : Séparer l'adresse, le code postal et la ville ?

Bonsoir le fil 🙂,
Avec beaucoup de retard et seulement pour le fun (étonné que david84 n'ai pas essayé 😉...).
Une possibilité RegExp
VB:
Dim Match, Matches
Function ExtractionCP(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = " \d{5} "
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionCP = Trim(Matches(0))
End With
End Function
Function ExtractionRue(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "^.* \d{5} "
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionRue = Left(Matches(0), Len(Matches(0)) - 7)
End With
End Function
Function ExtractionVille(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = " \d{5} .*$"
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionVille = Right(Matches(0), Len(Matches(0)) - 7)
End With
End Function
Voir PJ 😉.
Bonne soirée 😎
 

Pièces jointes

Dernière édition:
Re : Séparer l'adresse, le code postal et la ville ?

Bonjour le fil 🙂,
Encore pour le fun, je me suis dit : et si y en a un qui habite "Rue des 50000 Totos 13000 Marseille" 😛...
J'ai donc réétudié mes RegExp et vous propose une version qui le supporte correctement :
VB:
Dim Match, Matches
Function ExtractionCP(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = " \d{5} "
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionCP = Trim(Matches(Matches.Count - 1))
End With
End Function
Function ExtractionRue(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "^.* \d{5} "
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionRue = Left(Matches(0), Len(Matches(0)) - 7)
End With
End Function
Function ExtractionVille(Cellule As Range) As String
Application.Volatile
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = " \d{5} [^0-9]*$"
Set Matches = .Execute(Cellule.Text)
If Matches.Count >= 1 Then ExtractionVille = Right(Matches(0), Len(Matches(0)) - 7)
End With
End Function
Bonne journée 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour