XL 2013 je souhaite extraire un numéros d'affaire dans plusieurs cellules

ALEX1995

XLDnaute Nouveau
Bonjour,

J'ai un problème qui m'a paru simple au débart mais qui s'avère être trés compliqué pour moi au final.

J'aimerai extraire un numéros d'affaire dans une chaine de caractère. par exemple en cellule A1 j'ai : AZENOR - AZE19041 - suivi d'affaire.xlsx
Je souhaiterai obtenir dans la cellule B1 : AZE19041

Le problème c'est que ce numéro d'affaire n'est pas situé au meme endroit dans toutes les cellules A2 a3 a4 ...

La seul chose qui reste constant c'est la suite de 3 lettres et de 5 chiffres.

Quelqu'un pourrait m'aider svp?

Merci d'avance

Alex
 

Robert

XLDnaute Barbatruc
Re,

Essaie comme ça :

VB:
Sub Macro1()
Dim O As Worksheet
Dim TV As Variant
Dim V As String
Dim K As Integer
Dim TL() As Variant

Set O = Worksheets("Feuil1")
TV = O.Range("A1").CurrentRegion
K = 1
For I = 1 To UBound(TV, 1)
    If UBound(Split(TV(I, 1), ".")) > 0 Then
        V = Split(TV(I, 1), ".")(0)
        TV(I, 1) = V
    End If
Next I
For I = 1 To UBound(TV, 1)
    If UBound(Split(TV(I, 1), "-")) > 0 Then
        For J = 0 To UBound(Split(TV(I, 1), "-"))
            V = Trim(Split(TV(I, 1), "-")(J))
            If InStr(1, V, "Suivi") <> 0 Then
                V = Right(Split(V, ".")(0), 8)
            End If
            If Len(V) = 8 Then
                If IsNumeric(Right(V, 5)) Then
                    ReDim Preserve TL(1 To K)
                    TL(K) = V
                    K = K + 1
                    Exit For
                End If
            End If
        Next J
    End If
Next I
O.Range("B1").Resize(K - 1, 1) = Application.Transpose(TL)
End Sub
 

Roblochon

XLDnaute Accro
Bonjour,
Une proposition par expression régulière.

La seul chose qui reste constant c'est la suite de 3 lettres et de 5 chiffres.
Il semble y avoir des références à 2 lettres et 5 chiffres. Le paterne de l'expression régulière et fait en fonction de ça: "[a-z]{2,3}[\d]{5}"
Si vous voulez vraiment que 3 lettres et 5 chiffres, le remplacer par : "[a-z]{3}[\d]{5}"

Bonne soirée
 

Fichiers joints

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @ALEX1995 :) , @Robert ;), @Roblochon ;),

Un essai avec une troisième méthode: utilisation d'une formule matricielle.
La formule matricielle en B1 est à tirer/copier vers le bas:
VB:
=STXT(A1;EQUIV(1;((GAUCHE(STXT(A1;COLONNE(A:AV);8);3)>="A")*(GAUCHE(STXT(A1;COLONNE(A:AV);8);3)<="Z"))*(1*ESTNUM(1*DROITE(STXT(A1;COLONNE(A:AV);8);5)));0);8)
 

Fichiers joints

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Un autre essai avec une fonction personnalisée: =Affaire(B1)
VB:
Public Function Affaire$(ByVal x)
Dim i&, s, c
  x = " " & UCase(x) & " "
  For i = 1 To Len(x)
    c = Mid(x, i, 1)
    Select Case c
      Case "A" To "Z", "0" To "9": s = s & c
      Case Else: s = s & " "
    End Select
  Next i
  For Each c In Split(s)
    If c Like "[A-Z][A-Z][A-Z]#####" Or c Like "[A-Z][A-Z]######" Then Affaire = c: Exit Function
  Next c
End Function
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas