Public T, Centre%, Ligne%, Dep%, Arr%, D%, N%
Sub Distance()
T = Sheets("tableau A (input)").[A1].CurrentRegion ' Données dans array, plus rapide
Application.ScreenUpdating = False
DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row ' Dernière ligne tableau B
For L = 2 To DL
Centre = Cells(L, "A"): Ligne = Cells(L, "B"): Dep = Cells(L, "C"): Arr = Cells(L, "D") ' Acquisition
CalculDistance ' Calcul de la distance
Cells(L, "E") = D ' Ecriture distance
' Info progression dans statusbar ... pour faire patienter
N = N + 1
If N = 100 Then
N = 0: Application.StatusBar = "Progression : " & Format(L / DL, "0%")
End If
Next L
Application.StatusBar = ""
End Sub
Sub CalculDistance()
D = 0: L = 2
While T(L, 1) <> Centre: L = L + 1: Wend ' Début Centre
While T(L, 2) <> Ligne: L = L + 1: Wend ' Début Ligne
While T(L, 3) <> Dep: L = L + 1: Wend ' Début Départ
L = L + 1
Ldeb = L ' Ligne de début
While T(L, 3) <> Arr: L = L + 1: Wend ' Début Arrivée
Lfin = L ' Ligne de fin
For L = Ldeb To Lfin
D = D + T(L, 5) ' On ajoute la distance
Next L
End Sub