Extraire caractères spécifiques d'une cellule

Bonjour je cherche à extraire des caractères spécifique d'une cellule.

Exemple :

en A1 j'ai : bonjour je vous informe que mon numéro est le 5858585T , merci de me renseigner sur mon dosssier...

Je cherche à isoler le numéro dans la cellule A2.

Sachant que je peux en avoir des centaines par jour, comment puis-je identifier ce numéro composé de 7 chiffres et une lettre afin de me faciliter la tâche ?

Merci de de vos retours.

Bonjour,

Pour mieux cerner la problématique, il faudrait nous exposer une liste plus exhaustive d'exemples avec les cas de figure possibles et le résultat attendu.

Si il n'y a toujours qu'une lettre présente qu'en dernière position, ce ne sera pas la même chose qu'un nombre variable de lettres à des positions variables dans la chaîne de caractères...

Bonjour,

alors ce numéro que je cherche à isoler est toujours composé de 7 chiffres et une lettre type "0000000A". J'ai extrait les messages afin qu'ils se retrouvent dans une seule cellule, étant donné qu'il s'agit d'un message la position du numéro est aléatoire dans la cellule, ce qui m'empeche d'utiliser la fonction STXT, le résultat attendu est que le numéro une fois identifié par la formule; se mette dans la cellule A2.

Voici quelques cas de comment se placent ces numéros dans la cellule :

../0000000A/..

..le 0000000A..

..le0000000A..

..est le suivant :0000000A..

Il y a aussi le cas ou la date est précédé ou suivi de ce numéro :

031020190000000A

0000000A03102019

Il y a aussi le cas ou la date est précédé ou suivi de ce numéro :

031020190000000A

0000000A03102019

Le sujet est suffisamment technique pour mériter un classeur Excel exhaustif... Sur lequel on peut se baser pour travailler.

Voici un fichier avec les différents cas que je viens de faire.

Merci de l'aide..

bonjour

au plus facile ; directement

9mriyouan.xlsx (9.15 Ko)

cordialement

bonjour

pour amorcer

dans la colonne AN j'ai creer la formule suivante

SI(ESTNUM(TROUVE("001L";AM2)*1);LIGNE()-1;"")

ainsi des N° de lignes apparaissent ( 8;9;10;11) ces derniers peuvent servir pour l'extraction

donc dis nous si cette base de calcul te convient , sachant qu'il sera toujours possible de condenser en une seule formule directement dans la colonne voulue

Salut Mryouan,

Salut Pedro, Tulipe,

en VBA, à adapter selon le style d'import de tes "phrases"...

1 double-clic sur la feuille démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tTab, tSplit
'
Cancel = True
tTab = Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tTab, 1)
    tSplit = Split(tTab(x, 1), " ")
    For y = 0 To UBound(tSplit)
        If Len(tSplit(y)) > 7 Then
            For z = 1 To Len(tSplit(y)) - 7
                If IsNumeric(Mid(tSplit(y), z, 7)) And Not IsNumeric(Mid(tSplit(y), z + 7, 1)) Then
                    tTab(x, 2) = Mid(tSplit(y), z, 8)
                    Exit For
                End If
            Next
        End If
    Next
Next
Range("A1").Resize(UBound(tTab, 1), 2).Value = tTab
'
End Sub

A+

1mryouan.xlsm (16.90 Ko)

Bonjour à tous ... Mryouan, Curulis, Pedro, Tulipe

Moi, j'aime bien les expressions régulières, ici ([0-9]){7}[A-Z]

Macro générique :

Function ChercheChaine(chaine, pattern, Optional indice = 1)
  Set obj = CreateObject("vbscript.regexp")
  obj.pattern = pattern
  obj.Global = True
  Set a = obj.Execute(chaine)
  If indice <= a.Count Then ChercheChaine = a(indice - 1) Else ChercheChaine = ""
End Function
9mriyouan.xlsm (13.79 Ko)

A jamais au-delà des compétences de mon petit cerveau, Steelson...

A jamais au-delà des compétences de mon petit cerveau, Steelson...

Je suis de le même état d'esprit ! C'est beau mais j'y comprend pas grands choses !!

Ouah, merci pour ces réponses !! à vous tous !!!

A jamais au-delà des compétences de mon petit cerveau, Steelson...

Je suis de le même état d'esprit ! C'est beau mais j'y comprend pas grands choses !!

Mais non, pas du tout. C'est plus simple que certaines formules matricielles dont certains ici présents mais que je n'ose citer par respect pour leur grande science en ont fait leur fonds de commerce !

C'est plus simple que les dico.scripting également utilisés.

Je ne suis pas parti d'une feuille blanche, la fonction à laquelle je viens d'ajouter un paramètre optionnel est un condensé de ce que j'ai pu lire ici et là. C'est vrai que j'avais un peu utilisé les expressions régulières en php. Donc la fonction, générique, on n'y touche plus et on la sert à toutes les sauces.

Ensuite, pour ce qui est du pattern, c'est simple : {7} veut dire 7 fois ce qui précède, à savoir un chiffre de [0-9], et ensuite une lettre et une seule de [A-Z]. Et une fois les ingrédients assemblés, cela donne ([0-9]){7}[A-Z]

La bible ... utilisez qwant ou wiki : https://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re

Bonjour tout le monde,

@Steelson, merci pour ces précisions utiles ! J'ai enregistré le lien, je tenterais ma chance à l'occasion.

bonjour

il est vrai que c'est remarquable , mais l'ennui c'est le "barratin" du code en amont pour le faire marcher

cordialement

Rechercher des sujets similaires à "extraire caracteres specifiques"