Distance inter sites
Bonjour,
Nouveau sur ce forum, je me permets de demander votre aide, ne savant pas s'il est possible de résoudre mon problème avec VBA.
Je travail à plusieurs endroits. Je dois calculer le nombre de kilomètre parcourus entre chaque site.
Mon logiciel de planning me permet d'avoir mon planning en format excel (feuille 1)
La distance entre les sites est au sein d'un tableau croisé en feuille 2.
Il y a plusieurs sites. Si je passe la journée sur le même site (site 2 8-12h, site 2 12-13h...) ca vaut 0.
Site 1 et site 2 sont géographiquement au même endroit donc aucune distance entre les deux.
C'est uniquement quand je me déplace qu'il faut compter les kilomètres, d'où mon tableau.
Il peut arriver qu'il y ait 3 sites différents donc la somme de 2 distances.
Le plus souvent je reste sur le même site.
J'ai contacté mon éditeur de logiciel mais il ne permet pas d'exporter le planning avec une présentation plus simples.
Ci joint le fichier excel que j'ai volontairement simplifié en ne laissant que lundi et mardi et sur un seul mois, le but pour moi serait d'être aidé, de comprendre et ""d'étendre" la solution aux autres jours de la même (et aux autres site il y en a une dizaine en réalité).
Je vous remercie sincèrement par avance.
bonjour,
proposition via une macro, à lancer via alt-F8.
Sub aargh()
Set wsp = Sheets("planningmensuelpourforum")
With wsp
For j = 1 To 7
For i = 5 To wsp.UsedRange.Rows.Count
If .Cells(i, j) <> "" Then
sommedistance = sommedistance + distance(.Cells(i, j), .Cells(i - 1, j))
End If
Next i
Next j
MsgBox "distance totale sur le mois " & sommedistance
End With
End Sub
Function distance(x, y)
'renvoie la distance entre le site x et y
Set wsd = Sheets("distance")
With wsd
Set re = .UsedRange.Range("A:A").Find(x, lookat:=xlWhole)
If re Is Nothing Then distance = 0: Exit Function
cx = re.Row
Set re = .UsedRange.Range("A:A").Find(y, lookat:=xlWhole)
If re Is Nothing Then distance = 0: Exit Function
cy = re.Row
distance = .Cells(cx, cy)
End With
End Function
Merci beaucoup pour votre aide !
Je vais essayer cela.