Private Sub Worksheet_Change(ByVal Target As Range)
Dim VC As String 'décalre la variable VC (Valeur Cherchée)
Dim O As Object 'déclare la variable O (Onglet)
Dim R As Range 'déclare la variable R (Recherche)
Dim Dest As Range 'déclare la variable Dest (cellule de Destination)
Dim test As Boolean 'déclare la variable test
If Target.Address <> "$I$5" Then Exit Sub 'si le chamgement a lieu ailleurs qu'en I5, sort de la procédure
VC = CStr(Target.Value) 'définit la valeur cherchée VC
'**********************************************************************************************
'cette partie supprime d'éventuelles anciennes données. Supprime la si tu désires les conserver
With Sheets("Récap") 'prend en compte l'onglet "Récap"
'si A2 n'est pas vide, efface toutes les lignes éditées à partir de la ligne 2
If .Range("A2").Value <> "" Then .Range("A1").CurrentRegion.Offset(1, 0).Clear
End With 'fin de la prise en compte de l'onglet "Récap"
'**********************************************************************************************
For Each O In Sheets 'boucle sur tous les onglets du classeur
'condition 1 : si le nom de l'onglet n'est ni "Data" ni "Récap"
If Not O.Name = "Data" And Not O.Name = "Récap" Then
Set R = O.Columns(1).Find(VC, , xlValues, xlWhole) 'de'finit la recherche R (Recherche VC dans la colonne 1 [=A] de l'onglet)
If Not R Is Nothing Then 'condition 2 : si il existe au moins une occurrence trouvée
'définit la cellule de destination Dest
Set Dest = Sheets("Récap").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
R.Resize(1, 4).Copy Dest 'copie la cellule de l'occurrence trouvée redimensionné à 4 colonnes (de A à D)
test = True 'définit la variable test
End If 'fin de la condition 2
End If 'fin de la condition 1
Next O 'prochain onglet de la boucle
'si la variable test est "Faux", message
If test = False Then MsgBox "Aucune ocurrencetrouvée pour : " & CStr(VC) & " !"
End Sub