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

  • Initiateur de la discussion Initiateur de la discussion dknopfler
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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 😉)
 
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
 
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

Dernière édition:
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour