Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim T As String 'déclare la variable T (Texte)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim NE As Integer 'déclare la variable NE (Nombre d'Espaces)
Dim D As Integer 'déclare la variable D (Départ)
Dim P1 As Integer 'déclare la variable P1 (Position 1)
Dim P2 As Integer 'déclare la variable P2 (Position 2)
Dim TR() As Variant 'déclare la variable TR (tableau des Résultats)
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV
D = 1: P1 = 0: P2 = 0: NE = 0 'réinitialise les variables D, P1, P2 et NE
T = TV(I, 1) 'définit le texte T
NE = UBound(Split(T, " ")) 'définit le nombre de fois NE qu'il y a un espace dans T
For J = 0 To NE 'boucle 2 : sur tous les espace du texte T
P1 = InStr(D, T, Split(T, " ")(J), vbTextCompare) 'définit la position P1
P2 = InStr(P1, T, Split(T, " ")(J + 1), vbTextCompare): D = P2 'définit la position P2, redéfinit le départ D
'condition : si P2 et égale à P1 + 3 et si le texte entre ses positions est numérique
If P2 = P1 + 3 And IsNumeric(Split(T, " ")(J)) Then
K = K + 1 'incrémente K
ReDim Preserve TR(1 To K) 'redimensionne le tableau des résultats TR
TR(K) = P1 - 1 'définit la variable TR(K)
Exit For 'sort de la boucle 2
End If 'fin de la condition
Next J 'prochain espace de la boucle 2
Next I 'prochaine ligne de la boucole 1
'si K est supérieure à 1, renvoie le tableau transposé TR dans B1 redimensionnée
If K > 0 Then O.Range("B1").Resize(K, 1).Value = Application.Transpose(TR)
End Sub