Extraire code postal cellule
Mh
-
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite extraire une chaine de caractères de plusieurs cellules Excel, sachant que je n'ai pas le même nombre de caractères à chaque fois en partant de la fin ou du début Par exemple:
80 RUE EMILE ZOLA 10000 TROYES. Je souhaite extraire le code postal 10000.
Je vous remercie en avance!
Je souhaite extraire une chaine de caractères de plusieurs cellules Excel, sachant que je n'ai pas le même nombre de caractères à chaque fois en partant de la fin ou du début Par exemple:
80 RUE EMILE ZOLA 10000 TROYES. Je souhaite extraire le code postal 10000.
Je vous remercie en avance!
A voir également:
- Laposte_hexasmal
- Code ascii - Guide
- Extraire une video youtube - Guide
- Code postal - Télécharger - Vie quotidienne
- Extraire le son d'une vidéo - Guide
- Code puk bloqué - Guide
2 réponses
Bonjour,
Pour récupérer les 3 composants de l'adresse, voir : https://cellulexcel.blogspot.com/p/adresse-decoupage.html
Pour récupérer les 3 composants de l'adresse, voir : https://cellulexcel.blogspot.com/p/adresse-decoupage.html
Bonjour,
une autre approche en vba
https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-P
pour l'exemple liste colonne A et code postal colonne B
une autre approche en vba
https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-P
pour l'exemple liste colonne A et code postal colonne B
Option Explicit 'https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-P Sub extraireValeursNumeriques_DansChaine() Dim i As Byte, Nb As Byte Dim Cible As String Dim Nombre As Double Dim j As Integer Dim DerniereLigneUtilisee As Long DerniereLigneUtilisee = Range("A" & Rows.Count).End(xlUp).Row 'liste colonne A For j = 1 To DerniereLigneUtilisee Cible = Cells(j, 1) '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)) If Len(Nombre) > 4 Then Cells(j, 2) = Nombre 'code postal en colonne B i = i + Len(Str(Nombre)) - 1 End If Next Next j End Sub
Bonjour à tous
Quitte à passer par du VBA autant peut être utiliser une fonction personnalisée plus courte, basée sur le fait que le code postal est vraisemblablement la seule valeur numérique de longueur 5 caractères :
Fonction personnalisée à mettre dans un module de l'éditeur VBA
S’utilise ensuite selon la syntaxe =codepostal(A1)
Cdlmnt
Via
Quitte à passer par du VBA autant peut être utiliser une fonction personnalisée plus courte, basée sur le fait que le code postal est vraisemblablement la seule valeur numérique de longueur 5 caractères :
Fonction personnalisée à mettre dans un module de l'éditeur VBA
S’utilise ensuite selon la syntaxe =codepostal(A1)
Function codepostal(cell As Range) tablo = Split(cell, " ") ' découpage de la chaîne en fonction des espaces For n = 0 To UBound(tablo) ' boucle sur les valeurs obtenues If IsNumeric(tablo(n)) And Len(tablo(n)) = 5 Then codepostal = tablo(n) ' si la valeur est numérique et de longueur 5 elle est retenue Next End Function
Cdlmnt
Via
Un plan B si on ne veut pas écrire une formule un peu complexe via le addin Excel Pack de fonctions XLP et sa fonction EXTRAIRE_MOT, étant admis que le code postal est toujours dans notre exemple le cinquième "mot" (ce qui exclut les voies sans numéro ou les compléments d'adresse du style lieu-dit, résidence....).
La formule citée par jee pee me semble souffrir du même inconvénient, mais en notant que l'adresse y est cette fois-ci déclinée en 7 "mots".
https://www.excel-pratique.com/fr/fonctions-complementaires
https://www.excel-pratique.com/fr/fonctions-complementaires/extraire-mot
https://datanova.laposte.fr/explore/dataset/laposte_hexasmal/download/?format=xls&timezone=Europe%2FBerlin&lang=fr&use_labels_for_header=true
Et à chercher dans toute la colonne C Code_Postal le "texte" que l'on retrouve dans notre cellule.
=STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)+4;5)