Extraire un nombre d'une chaine

snheed

XLDnaute Nouveau
Bonjour à tous,

J'ai une colonne d'un tableau Excel contenant une abréviation, un prénom, une catégorie et un nom.

Exemple :

MR DANIEL 1210 DUPOND
MME JULIE 3250 ROBERT
MME MARIE CHRISTINE 4500 DUBOIS

J'aimerai créer une nouvelle colonne pour obtenir le numéro de catégorie à droite du nom.

Exemple :

MR DANIEL DUPOND 1210
MME JULIE ROBERT 3250
MME MARIE CHRISTINE DUBOIS 4500

Pour information, le numéro de catégorie est toujours sur 4 caractères et il peut y avoir des prénoms composés.

J'ai essayé avec les fonction CHERCHE et STXT mais sans résultat. J'ai fais quelques petites recherches sur Internet et certaines personnes parlent de formules matricielles.

Quelqu'un serait-il en mesure de m'apporter un peu d'aide pour réaliser cette formule ?

Merci d'avance à tous ceux qui pourrons m'aider.

Snheed
 

Tibo

XLDnaute Barbatruc
Re : Extraire un nombre d'une chaine

Bonjour,

Un essai avec une formule matricielle :

ton texte en A1, en B1 :

Code:
=STXT(A1;EQUIV(VRAI;ESTNUM(STXT(SUBSTITUE(A1;" ";"µ");
LIGNE(INDIRECT("1:"&NBCAR(A1)));4)*1);0);4)

Formule matricielle à valider par CTRL + MAJ + ENTREE

Je te laisse tester

@+
 

mromain

XLDnaute Barbatruc
Re : Extraire un nombre d'une chaine

bonjour snheed, Tibo,

je te propose une fonction VBA :
Code:
Function DeplacerNombre(celluleSource As Range) As String
Dim tabStr() As String, memNum As String, i As Integer
DeplacerNombre = ""
tabStr = Split(celluleSource.Text)
For i = LBound(tabStr) To UBound(tabStr)
    If IsNumeric(tabStr(i)) Then
        memNum = tabStr(i)
    Else
        DeplacerNombre = DeplacerNombre & IIf(DeplacerNombre = "", "", " ") & tabStr(i)
    End If
Next i
DeplacerNombre = DeplacerNombre & IIf(DeplacerNombre = "", "", " ") & memNum
End Function
voir le fichier joint.

a+
 

Pièces jointes

  • Classeur1.xls
    28.5 KB · Affichages: 88
  • Classeur1.xls
    28.5 KB · Affichages: 91
  • Classeur1.xls
    28.5 KB · Affichages: 79

snheed

XLDnaute Nouveau
Re : Extraire un nombre d'une chaine

Merci Tibo pour ta réactivité.

Je viens de tester et j'obtiens bien l'extraction de ma catégorie. Par contre comment dois-je faire pour la placer à droite du nom maintenant ?

J'aurais bien essayé de chercher à partir de ta formule mais j'ai du mal à la comprendre... A quoi sert le "µ" ?

Snheed
 

snheed

XLDnaute Nouveau
Re : Extraire un nombre d'une chaine

Génial ta solution mromain.

C'est parfaitement ce que je souhaitais !

Mais bon je reste tout de même intéressé par les explications de Tibo ne serait-ce que pour progresser et peux-être que d'autres membres auront un jour la même problématique que moi...

Merci encore à tous les deux pour votre aide et surtout votre réactivité.

Snheed
 

mromain

XLDnaute Barbatruc
Re : Extraire un nombre d'une chaine

rebonjour,
JB,

à partir de la formule matricielle de JB, voici une formule matricielle qui fait toute la transformation (mettre le nombre à la fin) :
Code:
=SUBSTITUE(A1;STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0);4)&" ";"")&" "&STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0);4)

a+
 

snheed

XLDnaute Nouveau
Re : Extraire un nombre d'une chaine

Parfais, en moins de cinq minutes, vous m'avez apportés deux solutions alors que j'avais même pas réussi à en trouver une en deux heures...

Je vais me pencher plus profondément dans toutes vos formules afin de ne pas appliquer bêtement tous ça.

Encore merci à tous.

Snheed
 

Tibo

XLDnaute Barbatruc
Re : Extraire un nombre d'une chaine

re,

Le principe, dans la formule proposée, est de décomposer la chaîne de caractères en tranches de 4 caractères et de trouver le rang de la tranches de 4 caractères qui est numérique.

La formule de Jacques Boisgontier est basée sur le même principe

Voilou pour la tentative d'explication

@+
 

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux