Private test As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim x As Byte 'déclare la variable x (incrément de ligne)
If test = True Then Exit Sub 'si la variable test est vraie, sort de la procédure
If Target.Column <> 2 Then Exit Sub 'si la colonne de la cellule éditée est différente de B, sort de la procédure
If Target.Row < 3 Then Exit Sub 'si la ligne de la cellule éditée est inférieure à 3, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub 'si selection de plus d'une seule cellule, sort de la procédure
With Sheets("Feuil2") 'prend en compt el'onglet "Feuil2"
Set pl = .Range("A3:A" & .Range("A65536").End(xlUp).Row) 'definit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil2"
Set r = pl.Find(Target.Value, , , xlWhole) 'définit la recherche r
x = 0 'définit la variable x
test = True 'definit la variable test
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence de la cellule modifiée dans la plage pl
pa = r.Address 'définit la première adresse
Do 'exécute
Target.Offset(x, 0).Value = r.Value 'place ce que l'on a édité dans la colonne B (par dessus pa premère fois, à la ligne ensuite)
Target.Offset(x, 1).Value = r.Offset(0, 1).Value 'place l'incrémentation du code dans la cellule à droite
Set r = pl.FindNext(r) 'redéfinit la recherche (suivant)
x = x + 1 'redéfinit la variable x (descend d'une ligne)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe des occurennce ailleurs qu'en pa
End If 'fin de la condition
Range("B2").End(xlDown).Offset(1, 0).Select 'place le curseur dans la première cellule vide rencontrée dans la colonne B
test = False 'redéfinit la variable test
End Sub