Récupérer Code postal parmis une adresse complète

Résolu/Fermé
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018 - 28 mars 2018 à 17:23
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 1 avril 2018 à 13:11
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

A voir également:

2 réponses

M-12 Messages postés 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 299
28 mars 2018 à 17:43
Bonjour

A tester avec une formule matricielle
https://www.cjoint.com/c/HCCpQMBVHET
0
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018
28 mars 2018 à 21:36
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié le 29 mars 2018 à 01:05
Bonjour,

avec "[0-9]" j'ai l'impression qu'OO accepte les expressions régulières (REGEX).
Là il est en avance sur excel qui les ignore totalement (hors vba).
eric
0
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018
1 avril 2018 à 10:08
Bonjour
C'est exactement ce que je voudrais savoir, est-ce possible ou non ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
1 avril 2018 à 10:19
Bonjour,

je t'ai répondu : non, sauf vba.
cs_Le Pivert t'a fait une proposition en vba en dessous...
eric
0
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018
Modifié le 1 avril 2018 à 12:50
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 mars 2018 à 11:10
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à
0