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

Fermé
Charlie - Modifié par Charlie le 10/03/2016 à 17:25
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - 11 mars 2016 à 09:46
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 vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
Modifié par Theo.R le 10/03/2016 à 17:50
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 vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
10 mars 2016 à 17:58
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 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
10 mars 2016 à 17:55
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
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 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
10 mars 2016 à 20:33
La matricielle proposée au #2 fonctionne pour ces 2 exemples.
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
11 mars 2016 à 09:46
La macro au #1 aussi... où est le problème alors?
0
Mauricejour
10 mars 2016 à 18:20
Bonjour
en vba tu peux mettre un split
Range("B1").Value = Replace(Split(Range("A1").Value, " ")(1), ",", "")

A+
Maurice
0