Bonjour,
Voici le code remodelé,
il donne donc l'adresse en 4 colonne, mais on peut bidouillé pour mettre uniquement le quartier, à voiir
Sub DecoupeAdresse()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim Tableau() As String
Dim Tableau_newline() As String
Dim i As Integer, Lig As Integer, Lmax As Integer
With Sheets("Table 1")
Lmax = .Range("A" & Rows.Count).End(xlUp).Row 'Identifie la dernière ligne de la base de données
'boucle pour parcourir les lignes
For Lig = 2 To Lmax
'découpe l'adresse à partir des espaces
Tableau = Split(.Cells(Lig, 2), " ")
Tableau_newline = Split(.Cells(Lig, 2), Chr(10))
'boucle sur le tableau pour repérer le CP
For i = 0 To UBound(Tableau)
If Tableau(i) Like "#####" Then 'Si l’élément découpé est un nombre à 5 chiffres, alors...
.Cells(Lig, 12) = Left(.Cells(Lig, 2), InStr(1, .Cells(Lig, 2), Tableau(i)) - 2) 'Rue = ensemble des caractères jusqu'au début du CP
.Cells(Lig, 13) = CLng(Tableau(i)) 'CP
.Cells(Lig, 14) = Right(.Cells(Lig, 2), Len(.Cells(Lig, 2)) - (InStr(1, .Cells(Lig, 2), Tableau(i)) + 5)) 'Ville = caractères après le CP
If UBound(Tableau_newline) = 0 Then
Exit For
End If
For Z = 0 To UBound(Tableau_newline)
.Cells(Lig, 15) = Right(Tableau_newline(Z + 1), Len(.Cells(Lig, 2)) - Len(Tableau_newline(Z)))
.Cells(Lig, 14) = Left(.Cells(Lig, 14), Len(.Cells(Lig, 14)) - Len(.Cells(Lig, 15))) 'Ville = caractères après le CP
Exit For
Next Z
Exit For
End If
Next i
Next Lig
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub