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

Charlie -  
Theo.R Messages postés 585 Statut Membre -
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 !!!!

4 réponses

  1. Theo.R Messages postés 585 Statut Membre 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
    1. Theo.R Messages postés 585 Statut Membre 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
  2. tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   1 064
     
    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
  3. 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
    1. tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   1 064
       
      La matricielle proposée au #2 fonctionne pour ces 2 exemples.
      0
    2. Theo.R Messages postés 585 Statut Membre 31
       
      La macro au #1 aussi... où est le problème alors?
      0
  4. Mauricejour
     
    Bonjour
    en vba tu peux mettre un split
    Range("B1").Value = Replace(Split(Range("A1").Value, " ")(1), ",", "")
    

    A+
    Maurice
    0