[ Résolu ] Extraire des chiffres dans une ligne avec une texte

vince2k

XLDnaute Nouveau
Bonjour à tous,

Je recherche une formule permettant d'extraire des chiffres dans une ligne de texte.

J'ai en fait une colonne "A" avec une multitude d'adresse adresse du type "5 rue des arcs 84500 Bollene".
J'aimerais retrouver dans la colonne "B" le code postal "84500".

Quelqu'un a t-il une solution svp ?

En vous remerciant d'avance
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Bonjour à tous,


Peux-tu essayer ce code de _Thierry du Rocher... :D :

VB:
Option Explicit    ' @Thierry sur XLD


Sub Number_Finder()
    Dim Plage As Range, Cell As Range
    Dim Starting As Integer, i As Integer
    Dim TmpNumber As String
    Range("B2:B5000").ClearContents


    With Feuil1
        Set Plage = .Range(.Range("A2"), .Range("A5000").End(xlUp))
    End With


    For Each Cell In Plage
        Starting = InStr(2, Cell, " ")
        If Starting <> 0 Then


            For i = Starting To Len(Cell)
                If IsNumeric(Mid(Cell, i, 1)) Then
                    TmpNumber = TmpNumber & Mid(Cell, i, 1)
                End If
            Next
            Cell.Offset(0, 1) = Val(TmpNumber)
        End If
        TmpNumber = ""
    Next Cell
End Sub

A + à tous
 

JCGL

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Bonjour à tous,
Salut Papou,

Papou : Joli code condensé...

Vince2000 : cela doit être possible en recherchant dans la chaîne les valeurs supérieures à 01000

A + à tous
 

JCGL

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Bonjour à tous,
Salut Cisco,

Une fonction de JB :

VB:
Function NumChaineOccur(Chaine, Occurence) ' JB sur XLD
  Longueur = Len(Chaine)
  P = 1
  Occur = 0
  Do
    Temp = ""
    Do While Not IsNumeric(Mid(Chaine, P, 1)) And P <= Longueur
       P = P + 1
    Loop
    Do While IsNumeric(Mid(Chaine, P, 1)) And P <= Longueur
      Temp = Temp & Mid(Chaine, P, 1)
      P = P + 1
    Loop
    Occur = Occur + 1
  Loop Until Occur = Occurence
  NumChaineOccur = Val(Temp)
End Function

Avec cette cette formule pour ne pas prendre en compte les numéros d'adresse :
Code:
=SI(NumChaineOccur(A2;1)<1000;NumChaineOccur(A2;2);NumChaineOccur(A2;1))

A + à tous
 

Paritec

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Re tous
et une petite fonction comme cela? et dans les cellules par exemple en B2 il met =CP(A2)
a+
papou:eek:

Code:
Function CP(cel As Range) As String
    Dim x&, n
    CP = ""
    n = Split(cel, " ")
    For x = 0 To UBound(n)
        If n(x) Like "#####" Then CP = n(x): Exit For
    Next x
End Function
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Bonjour à tous,

Fonctionne très partiellement (si pas de numéro de rue...) :

Code:
=STXT(A2;MIN(SI(ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(A2)))<>0;ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(A2)))));MAX(ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(A2))))-MIN(SI(ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(A2)))<>0;ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1)*LIGNE(INDIRECT("1:"&NBCAR(A2)))))+1)*1

Validation matricielle

A + à tous
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Extraire des chiffres dans une ligne avec une texte

Bonsoir vince2k, le forum,

On peut essayer cette formule matricielle (avec l'adresse en A2):
Code:
=REPT(0;5-NBCAR(MAX(SI(ESTNUM(0+STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)))-5;5));0+STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)))-5;5);""))))&MAX(SI(ESTNUM(0+STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)))-5;5));0+STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)))-5;5);""))

Formule matricielle: Elle doit être validée par la combinaison des touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée comme une formule classique.
Si la validation matricielle est correcte, alors Excel entoure la formule d'accolades {=.......}.
Chaque fois que cette formule sera modifiée, la validation devra se faire par Ctrl+Maj+Entrée. Les accolades apparaissent à la validation et ne doivent pas être saisies au clavier.


NB: il se peut que la formule ci-dessus présente un nombre de niveaux d'imbrication supérieur à ce que Excel 2003 autorise. Dans ce cas on peut se contenter de la formule matricielle ci-dessous. On perdra alors l'ajout du zéro devant les CP dont le numéro de département est inférieur à 10: 05123 donnera 5123" au lieu de 05123.
Code:
=MAX(SI(ESTNUM(0+STXT(A2;LIGNE(INDIRECT("1:" & NBCAR(A2)))-5;5));0+STXT(A2;LIGNE(INDIRECT("1:" & NBCAR(A2)))-5;5);""))
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Extraire des chiffres dans une ligne avec une texte

Bonsoir tout le monde

EDITION ; Celui-ci aussi est très intéressant (à mon sens)
(je mets le pour le plaisir de relire JNP que je salue au passage ainsi que tous les autres intervenants de ce fil regexpien ;) )
https://www.excel-downloads.com/threads/separer-ladresse-le-code-postal-et-la-ville.156212/


Un fil déjà ancien et peuplés d'habitués d'XLD distillant diverses approches.
https://www.excel-downloads.com/threads/extraire-dune-adresse-postale-le-numero-de-rue.88726/

PS:vinc2k: tu trouveras plusieurs autres fils de discussion parlant de l'extraction d'un code postal.
Aide-toi du moteur de recherche du forum pour les trouver ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 452
Messages
2 088 547
Membres
103 881
dernier inscrit
malbousquet