Option Explicit
'Se déclenche lorsqu'une valeur est changée dans la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration des variables
Dim i&, j&, k&
'Si la cellule changée est différente de A1 alors on sort
If Target.Address <> "$A$1" Then Exit Sub
'Sinon on continue
'Suppression des valeurs des lignes de 6 à 16
Rows("6:16").ClearContents
'Affecte la valeur de départ pour ta ligne
k = 6
'Avec la Feuil2
With Feuil2
'Si l'on trouve la valeur de A1 dans la colonne A de la Feuil2
'Si la valeur n'est pas trouvée on va à la suite
If Not IsError(Application.Match([A1], .Columns(1), 0)) Then
'i correspondant à la ligne trouvée pour la valeur de A1 en Feuil2
i = Application.Match([A1], .Columns(1), 0)
'Pour j allant de 1 à 10
For j = i To i + 10
'On copie les valeurs de la Feuil2 correspondant à la valeur recherchée
Cells(k, 1) = [A1]
'Pour la colonne B (2), on copie la valeur de la Feuil2 en Feuil1
Cells(k, 2) = .Cells(j, 2)
Cells(k, 3) = .Cells(j, 3)
'Si la ligne suivante de Feuil2 (en colonne A) n'est pas vide
'OU si la ligne suivante de Feuil2 (en colonne B) est vide,
'Alors on sort de la boucle
If .Cells(j + 1, 1) <> "" Or .Cells(j + 1, 2) = "" Then Exit For
'On ajoute 1 à la ligne de Feuil1
k = k + 1
'On passe à la ligne suivante
Next
End If
End With
End Sub