Sub Macro1()
'déclaration des variables ([plage] et [cel] comme des objet Range (=cellule ou plage),
'[derlig] et [lig] comme des entiers Long et premaddress comme variant [de type String eût été mieux !...])
Dim plage As Range, cel As Range, derlig As Long, lig As Long, col As Long, premaddress
'il manque la déclaration de la variable col : Dim col As Byte
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
With Sheets("BD") 'prend en compte l'onglet "BD"
derlig = .Range("a" & Rows.Count).End(xlUp).Row 'définit la dernière ligne édité [derlig] de la colonne A de cet onglet
Set plage = .Range("a2:a" & derlig) 'définit la plage [plage] de A2 à A...derlig dans cet onglet
End With 'fin de la prise en compte de l'onglet "BD"
'définit la cellule [cel] qui est la recherche [Find] dans la plage [plage] de la valeur entière (xlWhole) de la TextBox1
Set cel = plage.Find(TextBox1, , xlValues, xlWhole)
If Not cel Is Nothing Then 'condition : s'il existe au moins une occurrence trouvée
premaddress = cel.Address 'définit l'adresse [premaddress] de la première occurrence trouvée
Do 'exécute
With Sheets("Temp") 'prend en compte l'onglet "Temp"
lig = .Range("a" & Rows.Count).End(xlUp).Row + 1 'définit la première ligne vide [lig] de la colonne A de l'onglet "Temp"
For col = 1 To 22 'boucle sur les colonnes [col] 1 à 22 (=> A à V)
'récupère dans la cellule ligne [lig] colonne [col] de l'onglet "Temp",
'la valeur dans la ligne de l'occurrence trouvée décalée de [col] - 1 colonnes à droite
.Cells(lig, col) = cel.Offset(0, col - 1)
Next col 'prochaine colonne de la boucle
End With 'fin de la prise en compte de l'onglet "Temp"
Set cel = plage.FindNext(cel) 'redéfinit la cellule cel (recherche l'occurrence suivante)
'boucle tant qu'il existe de nouvelles occurrences aillerus qu'en [premaddress]
Loop While Not cel Is Nothing And cel.Address <> premaddress
End If 'fin de la condition
'il est recommandé de réafficher les rafraîchissements d'écran à la fin avec
'Application.ScreenUpdating = True
End Sub