Séparer Adresse C.P. Ville dans une cellule

  • Initiateur de la discussion LUDWIG
  • Date de début
L

LUDWIG

Guest
Bonjour à tous,

J'ai un fichier Excel contenant des adresses dans une cellule du style :
'3 RUE DES FLEURS 87000 LIMOGES'.

La ville et son CP varient.

Comment puis-je scinder cette cellule en trois cellules '3 RUE DES FLEURS', '87000' et 'LIMOGES' ?

Merci d'avance.
 
F

flo

Guest
Tu devrais télécharger la leçon cours n° 6 de jmg ! Il y a une action qui te permet de séparer comme toi tu veux !


Sub Action2()
If Range('A6').Value = '' Then Exit Sub 'ceci afin de verifier que A6 = quelque chose
Range('a6').Select
Selection.TextToColumns Destination:=Range('A7'), DataType:=xlFixedWidth
End Sub

A tester !! Fais gaffe quand même je suis pas un expert !!!

Bonne journée
 
L

LUDWIG

Guest
Merci,

mais cela correspond à 'Données > Convertir' et il me met une cellule par mot séparé par un espace :
'3 RUE DES FLEURS 87000 LIMOGES'
devient
'3' ; 'RUE' ; 'DES' ; 'FLEURS' ; '87000' ; 'LIMOGES'

Ca aurait pu me convenir mais comme l'adresse est variable, la colonne du code postal l'est aussi :
- '3 RUE DES FLEURS 87000 LIMOGES' > Code postal en colonne E
- '3 RUE DES ROSES ROUGES 87000 LIMOGES' > Code postal en colonne F
 
L

LUDWIG

Guest
Je me dis qu'en vba, on peut faire :

- un test sur le 1er caractère;
- si ce n'est pas un chiffre, on passe au suivant.
- Si c'est un chiffre, on regarde que les 4 caractères suivants sont des chiffres
- Si ce ne sont pas des chiffres, on passe au caractère suivant
- Quand on tombe sur un chiffre suivi de 4 autres chiffres, on a le code postal, on peut scinder.

Mais comme je suis une bille en vba... si une ame charitable pouvait me montrer ses talents ( :p ). En plus, c'est le genre de question qui doit revenir, mais je n'ai rien trouvé en utilisant 'recherche'.
 

Gael

XLDnaute Barbatruc
Bonjour Ludwig, bonjour Flo,

Je te propose une solution en utilisant une fonction complémentaire.

Tu télécharges la macro complémentaire suivante:

Adresse du téléchargement : Ce lien n'existe plus
nom de la macro: morefun.xll

Qui va t'apporter quelques fonctions de plus dont REGEX.STXT qui permet d'extraire une chaîne de caractères en utilisant des expressions de recherche.

puis (avec l'adresse exemple en D5):

=REGEX.STXT(D5;'\\d{5}') va extraire la première chaîne de 5 chiffres consécutifs soit '87000'

=DROITE(D5;NBCAR(D5)-(CHERCHE(REGEX.STXT(D5;'\\d{5}');D5;1)+5)) donnera les caractères de droite depuis la position du Code postal +5 jusqu'au nombre de caractères de l'adresse soit 'LIMOGES'

=GAUCHE(D5;CHERCHE(REGEX.STXT(D5;'\\d{5}');D5;1)-2) va prendre les caractères de gauche jusqu'à la position du code postal. soit '3 RUE DES FLEURS'.

Il y a aussi la possibilité de reprendre avec Word toutes les adresses et avec les fonctions de recherche/remplace avancées de trouver le code postal et de le remplacer par ';Code postal;' ce qui permet de le délimiter puis tu pourras très faciliement le séparer dans XL.

Bon courage

@+

Gael
 

Minick

XLDnaute Impliqué
Salut,

Un petit exemple en Vba

@+ [file name=LUDWIG.zip size=8192]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/LUDWIG.zip[/file]
 

Pièces jointes

  • LUDWIG.zip
    8 KB · Affichages: 369
  • LUDWIG.zip
    8 KB · Affichages: 385
  • LUDWIG.zip
    8 KB · Affichages: 406

Gael

XLDnaute Barbatruc
Rebonjour à tous, Bonjour Minick,

Minick, j'ai essayé ton 'petit exemple', il n'est pas petit, c'est GEANT et ça marche super bien.

C'était vraiment pas la peine que je me triture les neurones pour trouver des formules.

Merci en tout cas et je garde le petit exemple.

@+

Gael
 
L

LUDWIG

Guest
Hé bien !

Merci beaucoup les amis !

Tout d'abord merci à toi, Gaël, déjà pour m'avoir fait découvrir la possiblité d'ajouter des fonctions complémentaires (il faudrait d'ailleurs que je me penche sur comment on créé de nouvelles fonctions).

Ensuite, j'ai eu un soucis, que j'ai vite corrigé en regardant les exemples du site :
REGEX.STXT(D5;'d{5}') --> REGEX.STXT(D5;'\\d{5}')

Merci à toi Minick pour ton vba, qui marche effectivement très bien. J'ai regardé le code puis vite refermé caar je n'ai retrouvé aucune des quelques fonctions que je connais déjà en vba.
 

themyse

XLDnaute Nouveau
Re : Re:Séparer Adresse C.P. Ville dans une cellule

Bonjour Ludwig, bonjour Flo,

Je te propose une solution en utilisant une fonction complémentaire.

Tu télécharges la macro complémentaire suivante:

Adresse du téléchargement : Ce lien n'existe plus
nom de la macro: morefun.xll

Qui va t'apporter quelques fonctions de plus dont REGEX.STXT qui permet d'extraire une chaîne de caractères en utilisant des expressions de recherche.

puis (avec l'adresse exemple en D5):

=REGEX.STXT(D5;'\\d{5}') va extraire la première chaîne de 5 chiffres consécutifs soit '87000'

=DROITE(D5;NBCAR(D5)-(CHERCHE(REGEX.STXT(D5;'\\d{5}');D5;1)+5)) donnera les caractères de droite depuis la position du Code postal +5 jusqu'au nombre de caractères de l'adresse soit 'LIMOGES'

=GAUCHE(D5;CHERCHE(REGEX.STXT(D5;'\\d{5}');D5;1)-2) va prendre les caractères de gauche jusqu'à la position du code postal. soit '3 RUE DES FLEURS'.

Il y a aussi la possibilité de reprendre avec Word toutes les adresses et avec les fonctions de recherche/remplace avancées de trouver le code postal et de le remplacer par ';Code postal;' ce qui permet de le délimiter puis tu pourras très faciliement le séparer dans XL.

Bon courage

@+

Gael

peut tu m'expliquer s'il te plaie comment on utilise al fonction pour separer les adresse j'ai essayer par tous les moyen et je n'y arrive pas j'en ai besoin pour mon boulot.
merci bcp
themyse
 

Discussions similaires

Réponses
10
Affichages
241

Statistiques des forums

Discussions
312 432
Messages
2 088 373
Membres
103 835
dernier inscrit
Jaco24