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
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 :
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... )
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
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
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!)
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 !
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
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.
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
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...