Sub Test02()
Dim derlig As Long, i As Long, t, DeuxEtPlus As Boolean
Application.ScreenUpdating = False
With Sheets("les valeurs")
If .FilterMode Then .ShowAllData 'pour que END(xlup) soit correct
derlig = .Cells(Rows.Count, "d").End(xlUp).Row 'dernière ligne de la colonne D
'on insère une colonne après la colonne D dont le titre doit être "Temperature" obligatoirement
'si l'en tête de la colonne E est déjà "Temperature alors on quitte la procédure
If .Cells(1, "e") = "Temperature" Then MsgBox "Traitement déjà fait!", vbInformation: Exit Sub
.Columns("e:e").Insert
.Cells(1, "e") = "Temperature"
t = .Range("d1:e" & derlig).Value 'lecture du tableau des valeurs de la colonne D et E
For i = 2 To UBound(t) 'boucle sur les lignes de t sauf l'en-tête
If Not IsNumeric(t(i, 1)) Or (.Cells(i, "d") >= 40.1 And .Cells(i, "d") <= 54.7) Then
'si la valeur de D n'est pas numérique ou bien est dans l'intervalle [40.1 , 54.7]
t(i, 2) = t(i, 1)
t(i, 1) = ""
End If
Next i
Cells(1, "d").Resize(UBound(t), 2).Value = t 'on re-bascule le tableau sur la feuille
End With
End Sub