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
Millemercis - 15 sept. 2020 à 18:12
A voir également:
- Excel séparer code postal et ville
- Si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Code postal douala ✓ - Forum Loisirs / Divertissements
- Code postal thies ville - Forum Loisirs / Divertissements
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 :)
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 :)
23 oct. 2008 à 23:28
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.
5 nov. 2008 à 10:44
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?") )