Récupérer Code postal parmis une adresse complète
Résolu
zlatan40
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai vu sur ce sujet la réponse à ma question sur OO Calc. J'aimerais trouver l'équivalent sur Excel :-)
https://forum.openoffice.org/fr/forum/viewtopic.php?f=4&t=3729
J'ai une liste d'adresse en colonne A :
203 rue Victor Hugo 75000 Paris
5 avenue des lilas 59000 LILLE
1860 boulevard d Jean de La fontaine 31000 TOULOUSE
etc...
J'aimerais récupérer le code postal uniquement.
Cette formule le fait très bien sous Calc :
STXT(A1;CHERCHE("[0-9]";A1;NBCAR(A1)/4);5)
Sous Calc "[0-9]" permet de chercher soit 0 soit 1 soit 2 etc... Je n'ai pas trouvé comment reproduire cela sur Excel
Merci d'avance
J'ai vu sur ce sujet la réponse à ma question sur OO Calc. J'aimerais trouver l'équivalent sur Excel :-)
https://forum.openoffice.org/fr/forum/viewtopic.php?f=4&t=3729
J'ai une liste d'adresse en colonne A :
203 rue Victor Hugo 75000 Paris
5 avenue des lilas 59000 LILLE
1860 boulevard d Jean de La fontaine 31000 TOULOUSE
etc...
J'aimerais récupérer le code postal uniquement.
Cette formule le fait très bien sous Calc :
STXT(A1;CHERCHE("[0-9]";A1;NBCAR(A1)/4);5)
Sous Calc "[0-9]" permet de chercher soit 0 soit 1 soit 2 etc... Je n'ai pas trouvé comment reproduire cela sur Excel
Merci d'avance
2 réponses
-
-
Bonsoir
Merci pour la réponse, j'ai en effet trouvé sur un autre sujet comment faire autrement avec formule matricielle mais aussi sans.
https://forums.commentcamarche.net/forum/affich-2514762-excel-chaine-de-caracteres
Mais j'ai tout de même posé la question car cette formule est beaucoup plus simple et la possibilité de chercher plusieurs valeur, comme dans l'exemple [0-9], pourrait m'être très utile sur d'autres utilisations.
Merci -
-
-
-
Bonjour
Comme tu avais écrit "j'ai l'impression", je ne savais pas si tu étais sûr de ta réponse.
En effet, il y a plein d'autres moyens de le faire sinon :
- formule matricielle et VBA https://cellulexcel.blogspot.com/p/adresse-decoupage.html
- formule non matricielle https://www.cjoint.com/c/HDbkUmxjwDd
ou encore https://forums.commentcamarche.net/forum/affich-2514762-excel-chaine-de-caracteres
Donc il est bien impossible sous Excel d'utiliser les expressions régulières dans les formules
Merci
-
-
Bonjour,
en suivant le site indiqué ici:
https://forums.commentcamarche.net/forum/affich-35285266-recuperer-code-postal-parmis-une-adresse-complete#2
code vba:
Option Explicit Dim Var As Variant Dim result As String Sub For_X_to_Next_Ligne() Dim FL1 As Worksheet, NoCol As Integer Dim NoLig As Long Dim longueur As Integer Set FL1 = Worksheets(ActiveSheet.Name) NoCol = 1 'lecture de la colonne A For NoLig = 1 To Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne colonne A Var = FL1.Cells(NoLig, NoCol) If Var = "" Then Else FL1.Cells(NoLig, NoCol).Select extraireValeursNumeriques_DansChaine longueur = Len(result) 'longueur chaine numerique If longueur = 5 Then FL1.Cells(NoLig, NoCol + 1) = result 'code postal dans colonne B FL1.Cells(NoLig, NoCol) = Replace(FL1.Cells(NoLig, NoCol), result, "") 'supprime code postal dans la colonne A si utilité, sinon supprimer la ligne de code End If End If Next Set FL1 = Nothing End Sub Sub extraireValeursNumeriques_DansChaine() Dim i As Byte, nb As Byte Dim Cible As String, Resultat As String Dim Nombre As Double Cible = Var 'Pour que fonction Val puisse reconnaitre les décimales: Remplacement des 'virgules par des points Cible = Replace(Cible, ",", ".") 'Pour gérer deux nombres qui se suivent: remplacement des espaces 'par un caractère Alpha Cible = Replace(Cible, " ", "x") For i = 1 To Len(Cible) If IsNumeric(Mid(Cible, i, 1)) Then Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1)) nb = nb + 1 Resultat = Resultat & Nombre & vbLf i = i + Len(Str(Nombre)) - 1 End If Next result = Nombre End Sub Private Sub CommandButton1_Click() For_X_to_Next_Ligne End Sub
Voilà