1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Sub extraction() 'Tony4152_20220830
Dim myStr As String
Dim vct() As String
Dim pos, pos1, pos2 As Long
'Vous devez stocker le contenu de votre cellule dans la variable "myStr"
'Exemple : myStr = ThisWorkbook.Sheets("Feul1").Range("A1")
'Ici, j'ai mis le contenu de votre exemple dans la variable "myStr"
'myStr = "12H00Z1-VOLTIGE2FH1FC4LDG14H00Z"
myStr = "08H00Z(123)2-ACROBATIE BORDEAUX (PAS DE HARNAIX)1FH1FC7LDG14H00Z"
'Récupérer le 12, le 00, la phrase 1-VOLTIGE, le 2 de FH, le 1 de FC, le 4 de LDG, le 14 et le 00
ReDim vct(7)
'récupérer élément 1
vct(0) = IIf(Asc(Mid(myStr, 1, 1)) > 47 And Asc(Mid(myStr, 1, 1)) < 58, Left(myStr, 1), "")
vct(0) = vct(0) & IIf(Asc(Mid(myStr, 2, 1)) > 47 And Asc(Mid(myStr, 2, 1)) < 58, Mid(myStr, 2, 1), "")
vct(0) = vct(0) & IIf(Asc(Mid(myStr, 3, 1)) > 47 And Asc(Mid(myStr, 3, 1)) < 58, Mid(myStr, 3, 1), "") & " "
'récupérer élément 2
pos = InStr(1, myStr, "H") + 1
vct(1) = IIf(Asc(Mid(myStr, pos, 1)) > 47 And Asc(Mid(myStr, pos, 1)) < 58, Mid(myStr, pos, 1), "")
vct(1) = vct(1) & IIf(Asc(Mid(myStr, 1 + pos, 1)) > 47 And Asc(Mid(myStr, 1 + pos, 1)) < 58, Mid(myStr, 1 + pos, 1), "") & " "
'récupérer le texte & " "
pos1 = pos + 3
pos2 = InStr(1, myStr, "FH") - 1
vct(2) = Mid(myStr, pos1, pos2 - pos1) & " "
'récupérer l'élément de FH
vct(3) = Mid(myStr, pos2, 1) & " "
'récupérer l'élément de FC & " "
vct(4) = Mid(myStr, InStr(1, myStr, "FC") - 1, 1) & " "
'récupérer l'élément de LDG
vct(5) = Mid(myStr, InStr(1, myStr, "LDG") - 1, 1) & " "
'récupérer l'avant dernier
pos = InStrRev(myStr, "H") - 2
vct(6) = IIf(Asc(Mid(myStr, pos, 1)) > 47 And Asc(Mid(myStr, pos, 1)) < 58, Mid(myStr, pos, 1), "")
vct(6) = vct(6) & IIf(Asc(Mid(myStr, pos + 1, 1)) > 47 And Asc(Mid(myStr, pos + 1, 1)) < 58, Mid(myStr, pos + 1, 1), "") & " "
'récupérer le dernier
pos = InStrRev(myStr, "H") + 1
vct(7) = IIf(Asc(Mid(myStr, pos, 1)) > 47 And Asc(Mid(myStr, pos, 1)) < 58, Mid(myStr, pos, 1), "")
vct(7) = vct(7) & IIf(Asc(Mid(myStr, pos + 1, 1)) > 47 And Asc(Mid(myStr, pos + 1, 1)) < 58, Mid(myStr, pos + 1, 1), "") & " "
Debug.Print , vct(0), vct(1), vct(2), vct(3), vct(4), vct(5), vct(6), , vct(7)
'Il ne vous reste plus qu'à injecter les valeurs ci-dessus dans les cellules liées aux textboxes de votre formulaire pour les afficher
'dans votre formulaire où vous pouvez les éditer.
End Sub |