Extraire chaine de caractères VBA

Bonjour à tous,

j'ai besoin de votre aide pour développer un code en VBA:
Je souhaite extraire une chaine de caractère dans ma colonne C à partir du contenu de ma colonne B.

J'ai préparé un fichier excel avec le résultat attendu en colonne C.

IF Colonne B CONTIENT "MPN::" THEN copier la chaine de caractere
jusqu'a "-:" et la coller dans la colonne C

OR

IF COLONNE B CONTIENT "PART_NUMBER::" THEN copier la chaine de caractere
jusqu'a "-: et la coller dans la colonne C

IF COLONNE B CONTIENT "Part Number" THEN copier la chaine de caractere
et la coller dans la colonne C

ELSE IF passer à la ligne suivante

Merci pour votre aide !

Bonjour,

Si vous ne savez pas faire ce truc basique en VBA, pourquoi vouloir l'utiliser

Alors qu'une simple formule doit pouvoir faire le taf...

Bonjour

Dans ta question tu dit

IF Colonne B CONTIENT "MPN::" THEN copier la chaine de caractere
jusqu'a "-:" et la coller dans la colonne C

la 1ere ligne il y a MPN:: mais il y a pas de -

idem à la ligne 4 (et en plus MPN et PART_NUMBER n'ont pas le mêm numéro...),6,7,etc...

des fois il y a part number avec 2: des fois 1 seul...

Bref...bon courage

A+ François

Re,

Voici la formule qui pourrait convenir

=SI(NB.SI(B2;"*PART_NUMBER*")>0;STXT(B2;CHERCHE("PART_NUMBER";B2)+NBCAR("PART_NUMBER")+1;CHERCHE("-:";B2)-CHERCHE("PART_NUMBER";B2)-NBCAR("PART_NUMBER")-1);SI(NB.SI(B2;"*Part Number*")>0;STXT(B2;CHERCHE("Part Number";B2)+NBCAR("Part Number")+1;255);SI(NB.SI(B2;"*MPN::*")>0;STXT(B2;CHERCHE("MPN::";B2)+NBCAR("MPN::");CHERCHE("-:";B2)-CHERCHE("MPN::";B2)-NBCAR("MPN::"));"")))

Je traite "MPN::" en dernier puisque celui-ci apparait dans une cellule en même temps que "PART_NUMBER"
ceci dit, la référence semble être la même

A+

Merci pour votre aide.

Pour info la solution en VBA

Sub ExtraireContenuEntreChaines2()
    Dim LastRow As Long
    Dim ws As Worksheet
    Dim i As Long
    Dim Text As String
    Dim StartPos As Long
    Dim EndPos As Long
    Dim EndPosVol As Long

    Set ws = ThisWorkbook.Sheets("Sheet1") ' Remplacez "Sheet1" par le nom de votre feuille de calcul

    ' Définir la dernière ligne avec des données dans la colonne A
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Parcourir chaque ligne de la colonne A et définir start position & end position
    For i = 2 To LastRow
        Text = ws.Cells(i, 2).Value
        StartPos = InStr(1, Text, "MPN::") + Len("MPN::")
        EndPos = InStr(StartPos, Text, "-:")
        EndPosVol = InStr(StartPos, Text, "Vol")

        If StartPos > 0 And (EndPos > 0 Or EndPosVol > 0) Then
            ' Déterminez la fin en fonction de ce qui est trouvé en premier
            If EndPos > 0 And (EndPosVol = 0 Or EndPos < EndPosVol) Then
                ' Extraire le texte entre "MPN::" et "-:" et le placer dans la colonne B
                ws.Cells(i, 2).Value = Mid(Text, StartPos, EndPos - StartPos)
            Else
                ' Extraire le texte entre "MPN::" et "Vol" et le placer dans la colonne B
                ws.Cells(i, 2).Value = Mid(Text, StartPos, EndPosVol - StartPos)
            End If
        End If
    Next i
End Sub

Bonjour et merci pour votre retour,

Comme vous est venu cette solution

En tout cas

Rechercher des sujets similaires à "extraire chaine caracteres vba"