Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range 'déclare la variable pl
Set pl = Range("H2:H" & Range("H65536").End(xlUp).Row) 'définit la variable pl
If Application.Intersect(pl, Target) Is Nothing Then Exit Sub 'si le changement à lieu ailleurs que dans la colonne H, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sont sélectionnées, sort de la procédure
Select Case Target.Value 'sélection selon le cas, en fonction de la valeur éditée en H
Case "TR1" 'cas "TR1"
Target.Offset(0, 1).Value = Cells(Target.Row, 4) 'affiche la valeur de la colonne D
Case "TR2" 'cas "TR2"
Target.Offset(0, 1).Value = Cells(Target.Row, 5) 'affiche la valeur de la colonne E
Case "TR3" 'cas "TR3"
Target.Offset(0, 1).Value = Cells(Target.Row, 6) 'affiche la valeur de la colonne F
Case "TR4" 'cas "TR4"
Target.Offset(0, 1).Value = Cells(Target.Row, 7) 'affiche la valeur de la colonne G
Case Else 'tous les autres cas
Target.Offset(0, 1).Value = "" 'vide le coût réel
End Select 'fin de la sélection selon le cas
End Sub