Comment extraire une information spécifique dans une colonne avec VBA

Bonjour a tous ,

Je rencontre un problème avec un traitement de donnée avec VBA.

L' idée est d'extraire un numéro spécifique se trouvant dans une colonne et le coller dans une autre colonne comme l'indique l'image suivante :

vba

Les numéros en question comment soit par KS ou DE ou BN ou NM ou SK ou TV suivis de 9 chiffres , j'espère que ce détail vous permettra de m'aider

Je vous joint aussi un fichier Excel contenant une partie des donnée ainsi que tu résultat attendu ( colonne B = donnée brute ; colonne D = résultat attendu grâce au macro)

10extract.xlsx (11.38 Ko)

Je vous remercie d'avance pour vos retours

Bonjour,

une proposition via fonction personnalisée sans l'utilisation de regex (non disponible sur MAC)

Function extraction(texte)
    'KS ou DE ou BN ou NM ou SK ou TV suivis de 9 chiffres
    stt = Split("KS,DE,BN,NM,SK,TV", ",")
    For i = LBound(stt) To UBound(stt)
        s = 0
        Do
            s = InStr(s + 1, texte, stt(i), vbTextCompare)
            If s > 0 Then
                If Mid(texte, s + 2, 9) Like "#########" Then
                    extraction = Mid(texte, s, 11)
                    Exit Function
                End If
            End If
        Loop Until s = 0
    Next i
    extraction = ""
End Function
14extract-1.xlsm (20.12 Ko)

Bonjour ARman, h2so4

Un essai , à tester :

Sub ARman()
Dim T, i As Long, j As Byte, Deb As String

With Worksheets("Sheet1")
 For i = 1 To .Range("B" & Rows.Count).End(xlUp).Row
    T = Split(.Range("B" & i).Value, " ")
    For j = LBound(T, 1) To UBound(T, 1)
        If Len(T(j)) = 11 Then
            Deb = Left(T(j), 2)
            If Deb = "KS" Or Deb = "DE" Or Deb = "BN" Or Deb = "NM" Or Deb = "SK" Or Deb = "TV" Then .Range("E" & i).Value = T(j)
        End If
    Next
 Next
End With
End Sub

A+

Bonjour

Je vous remercie pour vos solutions et votre réactivité

Les deux solutions marchent bien

Merci

All the best

Rechercher des sujets similaires à "comment extraire information specifique colonne vba"