Microsoft 365 Récupérer Code Postal et Ville sur lignes Excel

dknopfler

XLDnaute Nouveau
Bonjour,

Je cherche à récupérer sur une ligne Excel les données du code postal sur une cellule et une ville sur l'autre, avec ce genre de données dans le classeur:

Eurexpo Avenue Louis Blériot 69686 Chassieu Cedex France +33 (0)4 72 22 33 44 +33 (0)4 72 22 31 20 Site Web E-mail
Parc-Expo de Rennes-Aéroport La Haie Gautrais 35172 Bruz France +33 (0)2 99 52 68 42 +33 (0) 2 99 52 71 85 Site Web E-mail

Est-ce possible ? Comment faire ?

Merci,

Dknopfler
 

jmfmarques

XLDnaute Accro
Bonjour
Analyse, comprends et utilise ce que fait par exemple ceci :
VB:
toto = "Eurexpo Avenue Louis Blériot 69686 Chassieu Cedex France +33 (0)4 72 22 33 44 +33 (0)4 72 22 31 20 Site Web E-mail"
titi = Split(toto, " ")
For k = 0 To UBound(titi)
  If titi(k) Like "#####" Then cp = titi(k): ville = titi(k + 1): Exit For
Next
MsgBox cp & vbCrLf & ville
 

GALOUGALOU

XLDnaute Accro
bonsoir dknopfler bonsoir le forum
une solution si le mot France figure dans toutes vos adresses. avec des formules du site de boisgontier et une colonne intermédiaire

cordialement
galougalou
 

Pièces jointes

  • adresse.xlsm
    21.6 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
bonjour
VB:
Public Function getcpville(cel As String, x As Long)
   Dim Matches As Object
   With CreateObject("vbscript.regexp")
        .Global = True: .IgnoreCase = True
        .Pattern = "(\d{5})+\s+([a-z]{1,20})"
        Set Matches = .Execute(cel)
         If Matches.Count > 0 Then getcpville = Split(Matches(0), " ")(x - 1)
    End With
End Function

Sub test()
MsgBox getcpville([A1], 2)
End Sub


formule pour cp
=getcpville(A1;1)
formule pour ville
=getcpville(A1;2)

mais ca va se compliquer sur les nom de ville composés ;)
demo3.gif
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Pour extraire le code postal
[size=2]crédits formule: eriiiic[/size] Ensuite pour la fin de chaîne [ICODE]=STXT(A1;6+SOMMEPROD(ESTNUM(STXT(SUBSTITUE(A1;" ";"|");LIGNE($1:$98);5)*1)*LIGNE($1:$98));9^9)
Evidemment àprés il faut tatonner ou ajouter une pincée de Données/Convertir
C'est plus long que le VBA, mais cela permet de passer plus de temps sur son Excel
(Surtout si on est Maciste ;))
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir Staple1600

galougalou la même avec le regex
VB:
Public Function getcpville(cel As String, x As Long)
    Dim Matches As Object
    With CreateObject("vbscript.regexp")
        .Global = True: .IgnoreCase = True
        .Pattern = "(\d{5})\D+ france"
        Set Matches = .Execute(cel)
        If Matches.Count > 0 Then
            If x = 1 Then
                getcpville = Val(Matches(0))
            ElseIf x = 2 Then
                getcpville = Replace(Replace(Matches(0), Val(Matches(0)), ""), "France", "")
            'ou
            'getcpville = Split(Replace(Matches(0), Val(Matches(0)), ""), "France")(0)
            
            End If

        End If
    End With
End Function
 

GALOUGALOU

XLDnaute Accro
bonsoir le fil
salut staple 1600
j'ai testé ta formule mais je n'ai pas réussi à obtenir l'extraction unique de la ville sinon je l'aurais intégré au classeur.

pour aider dknopfler (c'est bien là le but)
un classeur avec deux solutions ( celle initiale de mon post et la solution de patricktoulon)
cordialement
galougalou
 

Pièces jointes

  • adresse deux versions.xlsm
    18.7 KB · Affichages: 7
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

GALOUGALOU
J'avais pourtant été explicite, non ? ;)
1) d'abord parce qu'elle était jolie
2) pour le reste, relire ce j'ai écris dans le message#12

PS: Je ne savais pas qu'il y avait forcément un but
(en dehors de passer son temps libre avec Excel et ses aficionados ;))
Tant mieux si dans le flux des échanges, aide et réconfort sont apportés.
 

Discussions similaires

Statistiques des forums

Discussions
314 664
Messages
2 111 682
Membres
111 259
dernier inscrit
Seb15