extraire d'une adresse postale le numéro de rue

Océane

XLDnaute Impliqué
Bonsoir à tous
Dans les archives j'ai trouvé des solutions mais avec macro, qui sont trop compliquées pour moi.
Existe t-il une solution avec une formule ?
Les bis et terce ne m'intéressent pas je veux simplement mettre dans la cellule adjacente A, les 1, 2, ou troisième chiffres trouvés en tête dans la cellule B.
Merci d'avance
 

Pièces jointes

  • Numéro.xls
    14.5 KB · Affichages: 562
  • Numéro.xls
    14.5 KB · Affichages: 554
  • Numéro.xls
    14.5 KB · Affichages: 571

sposs

XLDnaute Nouveau
Re : extraire d'une adresse postale le numéro de rue

Salut,

on commence effectivement à s'approcher :)

Je te renvoie ton fichier avec une liste de cas réels que j'ai et je me demande du coup comment faire pour que les 3 première colonnes ne soient remplies que lorsque la valeur splittée est un nombre et avoir ensuite le reste du contenu de la cellule (avec éventuellement "Bis" et "Ter" à part)?

J'ai bien l'impression que cela pourrait se passer du côté de :

Code:
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 1))
Range("F3").FormulaR1C1 = "=RC[-3]&"" ""&RC[-2]&"" ""&RC[-1]"

mais cela dépasse ma compétence

J'ai tenté de réutiliser les résultats obtenus pour faire une concaténation en fonction de si la cellule est un nombre ou pas, mais le truc c'est que les cellules de sortie sont en format texte...
(oui je sais je suis vraiment nul en excel... :p)
 

Pièces jointes

  • sposs-01.xls
    38.5 KB · Affichages: 158

sposs

XLDnaute Nouveau
Re : extraire d'une adresse postale le numéro de rue

En complément de mon message précédent,

j'ai aussi trouvé sur le forum ceci :
https://www.excel-downloads.com/threads/separer-les-lettres-et-les-chiffres-dune-cellule.20627/

J'ai fait une petite modification entre Ubound et Lbound et on s'approche aussi du résultat de façon similaire, mais il y a toujours le souci d'arriver a écrire le résultat dans les bonnes colonnes en fonction de si c'est un numéro d'adresse ou le nom de la voie.

Voici le code

Code:
Sub SplitAdresse()

Dim Cellule As Range
Dim txt As String
Dim x As Variant
Dim i As Byte

For Each Cellule In Selection

txt = Cellule.Text

x = Split(txt, " ")
Cellule.Offset(0, 1) = x(LBound(x))
Cellule.Offset(0, 2) = ""

For i = LBound(x) To UBound(x) - 1
Cellule.Offset(0, 2) = Cellule.Offset(0, 2) + x(i + 1) + " "
Next i

Next Cellule

End Sub
 

Staple1600

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

Re

Exemple de modification (pas encore satisfaisant)
Code:
reg.Pattern = "^(\d+(-|/)\d+(B|bis|ter| B | bis | T | ter)?)"
EDITION 1
Un peu mieux, mais je n'arrive pas encore à trouver le bon pattern
Code:
reg.Pattern = "(\d+)((-|/|)\d+)?(bis|ter)?"
EDITION 2
Avec cette modification, c'est presque bon
Code:
reg.Pattern = "(\d+)((-|/|)\d+)?(B|T|bis|ter)?"
  • 12 rue de la rue –›12
  • 13B rue de la rue –›13
  • 14T rue de la rue –›14
  • 15bis rue de la rue –›15
  • 16ter rue de la rue –›16
  • 1/12 rue de la rue –›1
  • 15/16B rue de la rue –›15



Comme j'ai du mal avec RegExp
• Voici du même auteur, que GetAddressElement, une fonction que je comprends mieux .
(qui n'utilises pas RegExp)
Code:
Function NumeroRue(ByVal strAddr As String) As String
[COLOR=SeaGreen] 'auteur: cafeine[/COLOR]
Dim tmp() As String
Dim strComplement As String
tmp = Split(strAddr)
strComplement = " bis ter à a / -"
For i = 0 To UBound(tmp) - 1
If IsNumeric(Left(tmp(i), 1)) Then
[COLOR=SeaGreen] '///// ligne d'origine////////////////////////
' numéro de rue
'NumeroRue = NumeroRue & " " & tmp(i)
'/////////////////////////////////////////////[/COLOR]
'[COLOR=SeaGreen]Je me suis permis cette modification:
'ajout de Replace pour supprimer l'espace du début de chaine.[/COLOR]
NumeroRue = Replace(NumeroRue & " " & tmp(i), Chr(32), vbNullString)
ElseIf InStr(strComplement, tmp(i)) Then
[COLOR=SeaGreen] ' bis ou ter ou - /[/COLOR]
NumeroRue = NumeroRue & " " & tmp(i)
Else
Exit For
End If
Next i
End Function
 
Dernière édition:
G

Guest

Guest
Re : extraire d'une adresse postale le numéro de rue

bonjour Oceane,
bonjour Staple:),
bonjour Sposs,
bonjour Jocelyn,
bonjour Excel-lent,
bonjour le forum, les forumeuses, les forumeurs, les foromaines et foromains,

Bon j'ai oublié personne!????




Bonne journée à tous

[EDITION] OUPS! la journée commence bien! je me trompe de fil!!!!
Excuses (J'ai enlevé le fichier qui n'avait rien à voir!)
 
Dernière modification par un modérateur:

pierrejean

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

bonjour à tous :) :) :) :)

Alerté par Staple me posant une question sur RegExp , j'ai jeté un oeil sur le problème

Pouvez vous tester ma version ?

En effet j'ai cherché des adresses bizarres mais mon imagination ne vaut pas celle des édiles chargés de nommer les rues
 

Pièces jointes

  • pour_oceane.zip
    12.3 KB · Affichages: 100

Staple1600

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

Re

Merci pierrejean, d'avoir rejoint le fil

M'en vais tester de suite ta proposition.


EDITION
Alors la je dis Bravo :
applo2.gif
pierrejean
applo2.gif


—›• Pierrejean: cela ne t'a pas donné envie de découvrir RegExp ? ;)
 
Dernière édition:

Tibo

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

Bonjour,

Je joins une version basée uniquement sur des formules nommées (j'ai repris le fichier de Pierrejean).

Il y a une toute petite erreur avec la macro de Pierrejean qui "oublie" un BIS

Les formules nommées sont un peu tordues et il vaut quand même mieux, je pense, traiter le problème par macro, ce que je ne sais pas faire.

Voir le fichier avec les 2 solutions.

@+
 

Pièces jointes

  • extraction_adresses.zip
    15.2 KB · Affichages: 99

sposs

XLDnaute Nouveau
Re : extraire d'une adresse postale le numéro de rue

Salut à tous,

alors là je dois dire que je suis très impressionné par vos capacités d'analyse du problème et les multiples réponses que vous y avez apporté !

Je viens de tester les dernières propositions sur mon fichier qui contient un échantillon de plus de 10000 adresses et ça marche à la perfection en un tour de main !

Je m'incline ! Un grand merci !
 

pierrejean

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

Re

Merci Tibo

et bravo pour tes formules !

J'ai testé a nouveau sur ton fichier parce que je ne comprenais pas bien
mais ma macro est conçue pour un tableau qui n'a rien en dessous et le resultat a été catastrophique tant pour mon tableau que pour le tien
Ensuite j'ai voulu deplacer ton tableau sur une autre feuille et tu imagines le resultat !
Au final je propose le fichier joint après avoir debugué ma macro (qui n'oubliait pas mais effaçait après avoir ecrit)
Je note un ralentissement certain de l'affichage du au fait je pense qu'Excel recalcule les formules
 

Pièces jointes

  • extraction_adresses1.zip
    15.7 KB · Affichages: 52

Tibo

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

re,

Il est fort probable que mes formules influent sur le temps de calcul.

Car il s'agit de formules matricielles qui sont nommées et donc plus gourmandes en temps de calcul.

@+
 

Océane

XLDnaute Impliqué
Re : extraire d'une adresse postale le numéro de rue

Bonjour à tous
Eh bien moi qui suis à l'origine du fil, je ne pensais pas qu'il aurait de tels rebondissements (je me suis arrêté à l'appli. de Kiki 29).
Je m'éloigne d'Excel quelque temps pour partir en vacances, mais à la rentrée je vous donnerais mes impressions d'utilisateur (les formules deviennent trop compliquées pour moi)
Bonnes vacances.
 

pierrejean

XLDnaute Barbatruc
Re : extraire d'une adresse postale le numéro de rue

Re

Exact , mais Vba a des ressources !!
Voila une version qui permet de faire cohabiter les formules et les macros
Il s'agit simplement de geler les calculs pendant l'execution de la macro
Et je reconfirme mon ebahissement total devant tes formules
Moi j'arrive tout juste a imbriquer deux SI

Ps: Merci sposs
 

Pièces jointes

  • extraction_adresses1b.zip
    15.7 KB · Affichages: 70
  • extraction_adresses1b.zip
    15.7 KB · Affichages: 42
  • extraction_adresses1b.zip
    15.7 KB · Affichages: 41

sposs

XLDnaute Nouveau
Re : extraire d'une adresse postale le numéro de rue

et en plus le code est plutôt simple à comprendre malgré la complexité de la manip ! :)

J'ai pu adapter à 2 autres cas que je rencontre où les Ter et Bis sont des " T " et " B " grâce au If, ainsi que du coup les rares cas où il y avait une virgule après le chiffre ou le Bis/Ter (mais d'après ma source d'informations le fichier que j'ai à traiter serait "normalisé"... eh eh... je ne citerai pas ma source...)

Par contre il y a encore 2 derniers cas avec ces T et B :

12T RUE DE LA FORÊT ENCHANTÉE

J'ai bien essayé d'isoler le "T ", mais forcément je me retrouve avec un "RUE DE LA FORÊENCHANTÉE" pour le moins désenchanteur...
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 143
Membres
112 669
dernier inscrit
Guigui2502