Extraction d'une sous chaine de caractere VBA
malco
-
malco -
malco -
Bonjour,
j'ai comme exercice d'extraire des sous-chaines de caractères qui se situent exactement après la même sous-chaine fixe.
Voici un exemple : Dans la chaine suivante :
##RES##paul##Copozef##RES##coco##pppezriuezrkjpp##RES##papa##
je dois extraire exactement les sous chaines suivante : paul, coco, papa
Ces 3 termes se situent exactement après la meme constante : ##RES##
J'ai fait le code suivant :
Sub ExtractDatas()
Dim lettre As String
Data = ""
d = 0
ThisWorkbook.Worksheets("datas").Range("B1:B100").Select
Selection.Clear
GoRef1 = InStr(1, ThisWorkbook.Worksheets("datas").Range("A1").Value, "##RES#")
'1er check : commence du begin de la chaine
For i = GoRef1 To Len(ThisWorkbook.Worksheets("datas").Range("A1")) Step 7 + Len(Data)
Data = ""
If Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1) <> "#" Then
Do While Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1) <> "#"
Data = Data & Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1)
i = i + 1
Loop
End If
d = d + 1
ThisWorkbook.Worksheets("datas").Range("b" & d).Value = Data
Next i
End Sub
Le probleme est que ce code ne fonctionne pas correctement car il n'extrait pas que les 3 mots qui se trouvent après la sous-chaine constante, mais d'autres sous-chaines fausses (voici l'output : paul, ef, coco, riuezrkjpp, papa).
Pouvez vous me guider svp pour que le code n'affiche plus que les bons termes?
Merci beaucoup
j'ai comme exercice d'extraire des sous-chaines de caractères qui se situent exactement après la même sous-chaine fixe.
Voici un exemple : Dans la chaine suivante :
##RES##paul##Copozef##RES##coco##pppezriuezrkjpp##RES##papa##
je dois extraire exactement les sous chaines suivante : paul, coco, papa
Ces 3 termes se situent exactement après la meme constante : ##RES##
J'ai fait le code suivant :
Sub ExtractDatas()
Dim lettre As String
Data = ""
d = 0
ThisWorkbook.Worksheets("datas").Range("B1:B100").Select
Selection.Clear
GoRef1 = InStr(1, ThisWorkbook.Worksheets("datas").Range("A1").Value, "##RES#")
'1er check : commence du begin de la chaine
For i = GoRef1 To Len(ThisWorkbook.Worksheets("datas").Range("A1")) Step 7 + Len(Data)
Data = ""
If Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1) <> "#" Then
Do While Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1) <> "#"
Data = Data & Mid(ThisWorkbook.Worksheets("datas").Range("A1"), i, 1)
i = i + 1
Loop
End If
d = d + 1
ThisWorkbook.Worksheets("datas").Range("b" & d).Value = Data
Next i
End Sub
Le probleme est que ce code ne fonctionne pas correctement car il n'extrait pas que les 3 mots qui se trouvent après la sous-chaine constante, mais d'autres sous-chaines fausses (voici l'output : paul, ef, coco, riuezrkjpp, papa).
Pouvez vous me guider svp pour que le code n'affiche plus que les bons termes?
Merci beaucoup
A voir également:
- Extraction d'une sous chaine de caractere VBA
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractere vide - Guide
1 réponse
bonjour
une proposition
bonne suite
une proposition
Const cle As String = "##RES##" Const finmot As String = "##" Public Function extract(ByVal s As String) As String Dim p1 As Long, p2 As Long If s = "" Then extract = "" Else p1 = InStr(1, s, cle) If p1 > 0 Then s = Right(s, Len(s) - p1 - Len(cle) + 1) p2 = InStr(1, s, finmot) If p2 > 0 Then extract = Left(s, p2 - 1) & ";" & extract(Right(s, Len(s) - p2 - 1)) Else extract = s End If End If End If End Function
bonne suite
Merci beaucoup !