Bonjour le fil, bonjour le forum,
Une proposition VBA avec l'événementielle Change a placer dans le composant onglet Feuil1(Feuil1) :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim T As Integer 'déclare la variable T (Total)
If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs que dans B1, sort de la procédure
Range("A3").CurrentRegion.Offset(0, 1).ClearContents 'efface les anciennes données
Set O = Worksheets("Feuil3") 'définit l'onglet O
TV = O.Range("A1").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, 2), Target.Value, vbTextCompare) > 0 Then 'si le texte de B1 est contenu dans la donnée ligne I colonne 2 de TV
'définit la cellule de destination DEST
Set DEST = IIf(Range("B3").Value = "", Range("B3"), Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0))
T = T + 1 'incrémente le total T
DEST.Value = TV(I, 1) 'renvoie la donnée ligne I colonne 1 de TV dans DEST
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Range("C3").Value = T 'renvoie le total T dans C3
End Sub