Scinder des adresses

ballmaster

XLDnaute Occasionnel
Bonjour à tous,

On m'a tranmis un fichier d'adresse où malheuseument adresse+code postal + ville sont dans une seule et même colonne.

Or il me faudrait séparer tout cela en 3 colonnes bien distinctes
col1 -> adresse
col2-> Code postal
col3 -> Ville

Le problème est les longueurs sont variables, et je n'arrive donc pas à me servir des fonctions habituelles de manière automatique (gauche,droite,stxt,nbcar).

Je suis à court d'idée.
Alors si une âme charitable peut me venir en aide......

Merci d'avance
 

Pièces jointes

  • test.xls
    13.5 KB · Affichages: 68
  • test.xls
    13.5 KB · Affichages: 65
  • test.xls
    13.5 KB · Affichages: 65

job75

XLDnaute Barbatruc
Re : Scinder des adresses

Bonjour,
Si le code postal a toujours 5 chiffres, le problème revient à faire une macro qui détermine où se trouve, dans le texte étudié, cette série de 5 chiffres. Nos expert(e)s en VBA vont faire cela vite fait.
A+
 

Tibo

XLDnaute Barbatruc
Re : Scinder des adresses

Bonjour,

En attendant le passage des Vbaïstes, une solution avec formules matricielles :

en C2 :

Code:
=GAUCHE(B2;EQUIV(VRAI;ESTNUM(STXT(B2;LIGNE(INDIRECT("1:"&
NBCAR(A2)));5)*1);0)-1)

en D2 :

Code:
=STXT(B2;EQUIV(VRAI;ESTNUM(STXT(B2;LIGNE(INDIRECT("1:"&
NBCAR(B2)));5)*1);0)+1;5)*1

en E2 :

Code:
=STXT(B2;EQUIV(VRAI;ESTNUM(STXT(B2;LIGNE(INDIRECT("1:"&
NBCAR(B2)));5)*1);0)+7;99)

Ces formules sont à valider par CTRL + MAJ + ENTREE

Voir le fichier joint

Le principe, comme l'a évoqué job75, consiste à détecter la série de 5 chiffres consécutifs.

@+
 

Pièces jointes

  • ballmaster.zip
    1.6 KB · Affichages: 38

pierrejean

XLDnaute Barbatruc
Re : Scinder des adresses

bonjour ballmaster

Vois si cela te convient

Basé sur le code postal (Numerique a 5 chiffres) la macro n'est peut-etre pas universelle , mais je crois qu'elle traitera une majorité de cas

A la bourre comme d'hab !!

Salut job75 :)
Salut Tibo :):)
 

Pièces jointes

  • ballmastertest.zip
    10 KB · Affichages: 34

tototiti2008

XLDnaute Barbatruc
Re : Scinder des adresses

Bonjour à tous,

Je l'ai fait alors je le poste :

Code:
Sub ExtraitAdresse()
Dim i As Long, Adresse As String
    i = 2
    Do
        Adresse = Range("B" & i).Value
        ActiveSheet.Range("E" & i).Value = Right(Adresse, Len(Adresse) - InStrRev(Adresse, " "))
        Adresse = Left(Adresse, InStrRev(Adresse, " ") - 1)
        ActiveSheet.Range("D" & i).Value = CLng(Right(Adresse, Len(Adresse) - InStrRev(Adresse, " ")))
        Adresse = Left(Adresse, InStrRev(Adresse, " ") - 1)
        ActiveSheet.Range("C" & i).Value = Adresse
        i = i + 1
    Loop Until ActiveSheet.Range("B" & i).Value = ""
End Sub
 

Pyrof

XLDnaute Occasionnel
Re : Scinder des adresses

Bonjour,

Bonjour PierreJean je m'appréter a envoyer une macro que voici
Sub dudule()
ligne = 2
While Cells(ligne, 2) <> ""
adr = Cells(ligne, 2)
tmp1 = Split(adr, " ")

For b = UBound(tmp1) To 1 Step -1
If IsNumeric(tmp1(b)) Then
code_postal = tmp1(b)
pos = b
Exit For
End If
Next
ville = ""
adr1 = ""
For b = 0 To pos - 1
adr1 = adr1 & " " & tmp1(b)
Next
adr1 = Trim(adr1)
For b = pos + 1 To UBound(tmp1)
ville = ville & " " & tmp1(b)
Next
ville = Trim(ville)
Cells(ligne, 3) = adr1
Cells(ligne, 4) = code_postal
Cells(ligne, 5) = ville

ligne = ligne + 1
Wend
End Sub

et ce sans avoir vu la tienne !!!!!!!!!!!!!!!!!!!!
 

tototiti2008

XLDnaute Barbatruc
Re : Scinder des adresses

Bon, d'accord, mon code n'est pas universel et peut nécessiter quelques corrections... Mais franchement, y a-t-il beaucoup d'habitants du Mont d'Or dans la liste ? ;)
Je l'ai fait vite fait pour rendre service, et malgré ça j'ai été loin d'être le plus rapide...
 

Tibo

XLDnaute Barbatruc
Re : Scinder des adresses

re,

job75,

le coeur de la formule est ici :

Code:
EQUIV(VRAI;ESTNUM(STXT(B2;LIGNE(INDIRECT("1:"&NBCAR(A2)));5)*1)

cette formule consiste à repérer l'emplacement d'un nombre de 5 chiffres

Par contre, je ne comprends pas de quoi tu veux parler avec NBCAR(B2) ?

@+
 

Statistiques des forums

Discussions
312 901
Messages
2 093 403
Membres
105 723
dernier inscrit
jopi