[VBA ou Formules] Déconcaténations multiples d'adresses postales dans plusieurs cellules

ralph45

XLDnaute Impliqué
Bonjour les ami.e.s excellien.ne.s et le forum,

C'est un sujet maintes fois abordé sur ce site, mais j'avoue ne pas obtenir une satisfaction complète quant à mon souci actuel...
Je reçois sporadiquement des listes de "n" adresses structurées d'une façon qui ne me convient guère.

L'utilisation de ces informations est multiple, c'est pourquoi j'aurai besoin de les dé-concaténer en 8 parties (cellules) distinctes.

Vous trouverez en PJ un fichier exemple avec (tableau vert) les résultats attendus, avec tous les niveaux d'informations exhaustifs.
Je suis preneur de toute solution (VBA ou par formules)...

NB : en tableau orangé, mes propres tests par formules pour que vous rigoliez un bon coup (surtout pour le RESULTAT_03) ! :rolleyes:

À bientôt et un grand merci par avance pour toute aide (complète ou partielle) !
 

Pièces jointes

  • DECONC_ADRESSES.xlsx
    13.5 KB · Affichages: 10

ralph45

XLDnaute Impliqué
Bonjour le fil

=>ralph45
Juste au cas où ;)
Sont-ce des adresses fictives qui peuplent ton fichier?
(cf RGPD dans la charte du forum)

Bonjour Staple1600,

Merci de te pencher sur mon "cas"...
Oui, les adresses présentes dans le fichier joint sont le fruit de mon imagination.

De même, les fichiers sources sont tout à fait anonymisés au regard du RGPD.
Et pas que celui du forum !

Ralph45
 

Staple1600

XLDnaute Barbatruc
Re

Si c'est pas indiqué, je ne peux pas le deviner ;)
C'est pour cela que j'avais précisé: Juste au cas où
Jadis, j'ai tenté de faire du RNVP avec Excel
Puis j'ai laissé tombé au vu de la complexité de la chose.

EDITION: Bonjour youky(bj)
 
Dernière édition:

ralph45

XLDnaute Impliqué
Re

Si c'est pas indiqué, je ne peux pas le deviner ;)
C'est pour cela que j'avais précisé: Juste au cas où
Jadis, j'ai tenté de faire du RNVP avec Excel
Puis j'ai laissé tombé au vu de la complexité de la chose.

Staple1600,

'Vu ton lien... Je sais que la tâche est ardue, mais là où j'ai de la chance (!), c'est que les adresses sont un minima formalisées...
- Pas de gestion des CP et noms des communes ;
- Pas de gestion des civilités et des patronymes ("Mr", "Monsieur" au lieu de "M.", etc.)
- Pas d'abréviation des types de voies ("BD" au lieu de "Boulevard", etc.)
- Une structure fixe :
"NOM_VOIE" ( "TYPE_VOIE" ), "VOIE_NUMERO"
ou
"
NOM_VOIE" ( "TYPE_VOIE" & "ARTICLE_VOIE" ), "VOIE_NUMERO"


@+, Ralph45
 

Staple1600

XLDnaute Barbatruc
Re

J'ai ouvert le fichier exemple
Et si j'ai compris le but visé
Formule 1 (en M)
=MAJUSCULE(SUPPRESPACE(STXT(GAUCHE(A7;CHERCHE(" ),";A7));CHERCHE(" ( ";GAUCHE(A7;CHERCHE(" ),";A7)))+2;999)))
Formule2 (en N)
=SIERREUR(GAUCHE(M7;TROUVE(" ";M7));M7)
 

fanch55

XLDnaute Impliqué
Bonjour à tous,

Classeur à tester (voir lignes jaunes ).

L'appel de la fonction si elle vous convient est à customiser selon vos goûts pour le type d'option .
Il n'y a que le résultat_08 qui n'est pas strictement identique à votre exemple sinon on perd de l'information.
 

Pièces jointes

  • DECONC_ADRESSES.xlsm
    22 KB · Affichages: 4

ralph45

XLDnaute Impliqué
Bonjour à tous,

Classeur à tester (voir lignes jaunes ).

L'appel de la fonction si elle vous convient est à customiser selon vos goûts pour le type d'option .
Il n'y a que le résultat_08 qui n'est pas strictement identique à votre exemple sinon on perd de l'information.

Je me focalisais sur les retours de Staple1600 et de youki(BJ)... Je me permets de leur répondre avant @fanch55 . ;)

@youky(BJ)
Le résultat est idéal pour un adressage en une seule cellule, mais ce n'était pas l'objectif de ma demande. Toutefois, je garde le code, car il permet de répondre partiellement à une vieille interrogation.

@Staple1600
Tu as bien compris le but visé - je te rassure - et tes formules me conviennent parfaitement... Je les mets dans ma besace et continue pour les autres résultats en mode "formules"...

@fanch55
Oh, pinaise ! C'est à 99,9% les résultats attendus :

1) Vous avez raison pour RESULTAT_08 : c'était une bourde de ma part dans le résultat attendu ;

2) il n'y a que pour le RESULTAT_04 et pour l'exemple en ligne 15 que cela pêche :
"Édouard et Geneviève ( Rond-Point ), 12-14"
--> Comme il n'y a pas d'article dans ce cas-là entre parenthèses, j'attends une cellule vide (ou un caractère diacritique) au lieu de "ROND-POINT"...

... Mais je pinaille énormément. Chapeau bas, c'est excellent.

@tou.te.s, bravo et merci !

Ralph45
 

ralph45

XLDnaute Impliqué
Re @fanch55

Je vais me faire lyncher,mais je viens de percuter que la structure de l'adresse est légèrement différente qu'énoncée plus initialement.
Oui, j'ai fait appel à ma mémoire en postant ce message et j'aurai du deviner qu'elle n'est plus aussi bonne que dans mes jeunes et belles années.

A lire vos codes, je "crois" deviner que cela n'impacte que références "H" et "I", ici :

Case "H", "I"
T = Trim(Mid(T, InStr(T, ",") + 1))
For I = 1 To Len(T)

If Not IsNumeric(Mid(T, I, 1)) Then Exit For


... car en plus de la virgule après la parenthèse, il existe un texte "" avant le numéro de la voie.

Cela donne :
NOM_VOIE ( TYPE_VOIE ARTICLE_VOIE ), n° VOIE_NUMERO
Au lieu de :
NOM_VOIE ( TYPE_VOIE ARTICLE_VOIE ), VOIE_NUMERO
Soit par exemple,
Bourboule ( Place de la ), n° 26-30

Bon, je vais me donner des coups de fouets pour le restant de cette nuit...

Ralph45
 

ralph45

XLDnaute Impliqué
Oki,
Que doit-on faire de cette chaîne "n°" ?

Re,

Dans tous les cas*, il faut l'occulter, ne pas en tenir compte.
(*) C'est là où je me rends compte que je n'ai pas expliqué l'exploitation des résultats de cette demande.

... dont acte !
Le fait d'avoir "découpé" en autant de cellules l'adresse originale va me permettre principalement :
1° de reconstruire une adresse correcte au sens "géolocalisation" dans un logiciel de cartographie ;
2° de reconstruire une adresse correcte de tri optimisé dans une base de données.

Bonne soirée et bonne nuit !🥴

Ralph45
 
Haut Bas