Voilà pour couvrir 3 paires de colonnes.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
With Target
If .Column < 7 And .Column Mod 2 = 1 And .Row > 1 And .Cells.Count = 1 Then
.Offset(0, 1).ClearContents
If .Value <> "" Then
Set c = Range("A1:F" & .Row + 100).Find(.Value, Range("F1"), , xlWhole, xlByRows)
If Not c Is Nothing Then .Offset(0, 1).Value = c.Offset(0, 1).Value
End If
End If
End With
End Sub
Tu saisis indifféremment en A, C ou E les médicaments et les références en B, D, F (pour la première fois. La ligne 1 reste réservée aux en-têtes. Le point sensible est la recherche. Je ne peux tester d'une façon suffisamment étendue. Me signaler s'il y a des cas ou la valeur existe et n'est pas trouvée, avec les positions respectives de la saisie et de la valeur à trouver.
Cordialement
Ferrand