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 Cla 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 SubBonjour et merci pour votre retour,
Comme vous est venu cette solution
En tout cas