Function PtLePlusProche(ByVal Vecteur1, ByVal Tableau1) As Variant()
Dim X As Double, Y As Double, Z As Double, LProch As Long, _
CarDistProch As Double, L As Long, CarDist As Double, Résu()
If TypeName(Vecteur1) = "Range" Then Vecteur1 = Vecteur1.Value
If TypeName(Tableau1) = "Range" Then Tableau1 = Tableau1.Value
X = Vecteur1(1, 1): Y = Vecteur1(1, 2): Z = Vecteur1(1, 3)
LProch = 1
CarDistProch = (Tableau1(1, 1) - X) ^ 2 + (Tableau1(1, 2) - Y) ^ 2 + (Tableau1(1, 3) - Z) ^ 2
For L = 2 To UBound(Tableau1)
CarDist = (Tableau1(L, 1) - X) ^ 2 + (Tableau1(L, 2) - Y) ^ 2 + (Tableau1(L, 3) - Z) ^ 2
If CarDist < CarDistProch Then LProch = L: CarDistProch = CarDist
Next L
ReDim Résu(1 To 1, 1 To 3)
Résu(1, 1) = Tableau1(LProch, 1)
Résu(1, 2) = Tableau1(LProch, 2)
Résu(1, 3) = Tableau1(LProch, 3)
PtLePlusProche = Résu
End Function