Separer adresse cp et ville dans excel

Résolu/Fermé
melissa4 Messages postés 11 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 16 juillet 2007 - 24 janv. 2007 à 13:15
 Millemercis - 15 sept. 2020 à 18:12
bonjour

j'ai récupéré un fichier excel ou dans la meme colonne se trouve l'adresse le code postal et la ville je souhaiterais séparer cette colonne en 3 (une pour ladresse lautre pour le code postal et une pour la ville) mais je ne sais pas quelle est la formule pour que excel separe ce qui est a droite du code postal et a gauche du code postal de facon a separer les elements en 3 colonne.

il existe un convertisseur dans excel qui delimite aux espaces par exemple mais c vraiment pas pratique donc est ce que vous connaissez la formule magique?

merci pour votre aide

14 réponses

Bonjour tout le monde, j'ai eu exactement le meme probleme que vous pour separer les adresses de type :

12 rue tolbiac 75005 PARIS

et pour les prochains voila la solution :

Dans excel cliquez sur outils puis dans Macros lancez le Visual Basic editor.

là, allez dans VBA Project
dans le dossier module et enfin dans Module1

La dans la grande fenetre faites un joli copier coller de la macro que voila (comprise entre les 2 lignes) :

----------------------------------------------------------------------------------------------------------------

Function mode_calcul() As String
If (Cells(1, 43).Value = 0 Or IsNull(Cells(1, 43).Value)) Then
If (Cells(1, 46).Value = 0 Or IsNull(Cells(1, 46).Value)) Then
If (Cells(1, 60).Value = 0 Or IsNull(Cells(1, 46).Value)) Then
mode_calcul = ""
Else
mode_calcul = "-SLR"
End If
Else
mode_calcul = "-NET"
End If
Else
mode_calcul = "-BRT"
End If


End Function

Function nb_lignes() As Integer
Dim celluleCourante As Variant
Set celluleCourante = Range("A1")
nb_lignes = 1
Do While Not IsEmpty(celluleCourante)
Set celluleCourante = celluleCourante.Offset(1, 0)
nb_lignes = nb_lignes + 1
Loop
If nb_lignes = 1 Then nb_lignes = 2
End Function


Sub Adresses()
Dim dimension As Integer
Dim Cpt As Integer
Dim Cpt2 As Integer
Dim Adresse As String
Dim Ville As String
Dim CP As String
Dim finCP As Integer
Dim chaine As String
Dim Position As Integer

dimension = nb_lignes()
For Cpt = 1 To dimension
chaine = Cells(Cpt, 1)
Position = 0
For Cpt2 = 1 To Len(chaine) - 5
If IsNumeric(Mid(chaine, Cpt2, 6)) And Cpt2 > Position + 2 Then
Position = Cpt2
End If
Next Cpt2
If Position > 0 Then
For finCP = Position To Len(chaine)
If Trim(Mid(chaine, Position, finCP - Position)) <> "" Then
If Not IsNumeric(Mid(chaine, Position, finCP - Position)) Or Len(Mid(chaine, Position, finCP - Position)) > 7 Then Exit For
End If
Next finCP
If finCP > Len(chaine) Then finCP = Len(chaine) + 2
CP = Trim(Mid(chaine, Position, finCP - Position - 1))
finCP = finCP - 1
Adresse = Trim(Left(chaine, Position - 1))
If finCP > Len(chaine) Then finCP = Len(chaine) + 1
Ville = Trim(Right(chaine, Len(chaine) - finCP + 1))
Cells(Cpt, 1) = Adresse
Cells(Cpt, 2) = CP
Cells(Cpt, 3) = Ville
End If
Next Cpt
Range("B1", "B" & dimension).Replace What:=" ", Replacement:=""
End Sub

-----------------------------------------------------------------------------------------



Une fois cela copié :
mettez toutes vos adresses dans la Colonne A (la premiere de votre fichier) et retournez dans outils, Macros, Macros et cliquez sur la jolie petite macro appelée Adresses.
Et hop c magique vos adresses sont séparés de vos codes posteaux et de votre ville :) :) :)
C beau non

enfin derniere petite precision si la colonne A ne vous plait pas modifiez les trois lignes en fin de macro
Cells(Cpt, 1) = Adresse
Cells(Cpt, 2) = CP
Cells(Cpt, 3) = Ville

avec les numeros de colonne que vous désirez sachant que votre adresse concaténée doit se trouvée dans Adresse
que le numero et la rue s'y trouverons tjs et que CP et ville seront comme leur nom l'indiquent les colonnes Code postal et ville.
Bon travail a vous tous messieurs dames et j'espere que vous aurez gagner du temps grace à ca :)
25
Bonsoir Loki,

Un grand merci car tu viens de me faire ganger au moins une journée de travail pour séparer environ 2000 adresses dans un but de publipostage.

Bonne continuation et bon développement.
0
Moi perso ma colonne de départ ne sera jamais au même endroit et je bloque sur comment changer la fin de la macro. J'ai mit une inputbox pour demander le numéro de la colonne où se trouve les adresses et à la fin j'ai mis

Cells(Cpt, (col + 1)) = Adresse
Cells(Cpt, (col + 2)) = CP
Cells(Cpt, (col + 3)) = Ville

Mais ça bug!

(mon inputbos; col = InputBox("Dans quelle numéro de colonne se trouve l'adresse?") )
0