Bonjour,
Un essai ...
Sub Macro2()
Dim O As Worksheet 'déclare la variablre O (Onglet)
Dim TV As Variant 'déclare la variablre TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variablre TL (Tableau des Lignes)
Dim I As Integer 'déclare la variablre I (Incrément)
Dim J As Integer 'déclare la variablre J (incrément)
Dim K As Integer 'déclare la variablre K (incrément)
Set O = Worksheets("Feuil2") 'définit l'onglet O (à adapter)
O.Range("G9:G100").ClearContents 'vide les cellules G9 à G100 de l'onglet O
TV = O.Range("A9").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If InStr(1, TV(I, 1), "-", vbTextCompare) <> 0 Then 'si la donnée ligne I colonne 1 contient un tiret
K = K + 1 'incrémente K
ReDim Preserve TL(1 To K) 'redimensionne le tableau des lignes TL
Else 'sinon
If K <> 0 Then TL(K) = TL(K) + 1 'définit la valeur de TL(K)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
'si la donnée ligne I colonne 1 contient un tiret, renvoie la valeur de TL(J+1), incrémente J
If InStr(1, TV(I, 1), "-", vbTextCompare) <> 0 Then O.Cells(I + 7, "G").Value = TL(J + 1): J = J + 1
Next I 'prochaine ligne de la boucle
End Sub
ric