Comment extraire une chaîne de caractères d'une cellule ?

Charlie -  
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à extraire d'une cellule une suite de 4 caractères: 1 lettre puis 3 chiffres.
Ces caractères sont aléatoires: cela peut aller de B002 à F019 comme N001.

Pouvez-vous m'aider ?

exemple:

Bonjour,Logiciel F013, entreprise 10588

il faudrait que j'extraie dans une cellule le "F013".

cependant, cette chaine de caractères (1 lettre et 3 chiffres) n'est pas toujours précédée du mot logiciel ou a la meme place dans le texte. elle peut etre placée au début comme à la fin

Merci à vous !!!!
A voir également:

4 réponses

Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
Bonjours,

Ce code fonctionne pour extraire le code que vous décrivez de la cellule A1 et met en B1 ce même code, à adapter si besoin, notamment si plusieurs codes peuvent êtres présents :

Sub test()
Dim Mot As String
Mot = Cells(1, 1).Value

Do Until IsNumeric(Mid(Mot, 2, 3)) = True And IsNumeric(Left(Mot, 1)) = False And InStr(Left(Mot, 4), " ") = 0
Mot = Right(Mot, Len(Mot) - 1)
Loop

Mot = Left(Mot, 4)
Cells(1, 2).Value = Mot
End Sub
0
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
Encore plus simple avec une fonction Like pour la boucle :

Do Until Left(Mot, 4) Like "[A-Z]###"
au lieu de
Do Until IsNumeric(Mid(Mot, 2, 3)) = True And IsNumeric(Left(Mot, 1)) = False And InStr(Left(Mot, 4), " ") = 0
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
Pouvez-vous nous en dire plus sur les paramètres constants?
On peut imaginer 4 caractères après le premier espace, avant la deuxième virgule, à partir de la troisième majuscule, etc.

Vous pouvez aussi essayer la matricielle suivante ( à vérifier):
=STXT(A1;CHERCHE(STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0);3);A1)-1;4)
À valider avec Ctrl+ Shift+ Enter
0
Charlie
 
Merci de vos réponses,

le probleme c'est que cette suite de chiffres se balade dans la cellule selon les cas

exemple 1: F042 - Demande de rouverture
exemple 2: NVOICE F005   Bonjour

etc...
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
La matricielle proposée au #2 fonctionne pour ces 2 exemples.
0
Theo.R Messages postés 575 Date d'inscription   Statut Membre Dernière intervention   31
 
La macro au #1 aussi... où est le problème alors?
0
Mauricejour
 
Bonjour
en vba tu peux mettre un split
Range("B1").Value = Replace(Split(Range("A1").Value, " ")(1), ",", "")

A+
Maurice
0