Bonjour les amis,
pour une fois, je ne viens pas soumettre un nouveau problème mais seulement proposé une solution. La documentation française sur MapPoint étant très réduite, je me permets de soumettre un bout de code que j'utilise pour piloter MapPoint via VBA.
MapPoint est pour ceux qui ne le savent pas un puissant outil de Microsoft pour la visualisation de données cartographiques et permet de faire tourner des protocoles d'optimisation algorithmiques.
Ici, je reste dans les basiques, souvent certains forumeurs ont cherché à obtenir un calcul automatique des distances via le net. Alors ici, je vous propose une solution sans bug limite et avec une très nette précision basée sur MapPoint (application payante mais disponible en version d'essai).
Je dispose de MapPoint 2009.
Il suffit d'avoir deux colonnes : Ville A / Ville B (colonne 2 et 6 dans le code) :
Pour 1200 enregistrements, 2min pour obtenir toutes les distances.
Attention pensez à référence MapPoint. (Outils > Références...)
Cordialement. Si des personnes sont intéressées pour en savoir plus et que ça reste dans mes humbles cordes, n'hésitez pas.
Bonne journée.
pour une fois, je ne viens pas soumettre un nouveau problème mais seulement proposé une solution. La documentation française sur MapPoint étant très réduite, je me permets de soumettre un bout de code que j'utilise pour piloter MapPoint via VBA.
MapPoint est pour ceux qui ne le savent pas un puissant outil de Microsoft pour la visualisation de données cartographiques et permet de faire tourner des protocoles d'optimisation algorithmiques.
Ici, je reste dans les basiques, souvent certains forumeurs ont cherché à obtenir un calcul automatique des distances via le net. Alors ici, je vous propose une solution sans bug limite et avec une très nette précision basée sur MapPoint (application payante mais disponible en version d'essai).
Je dispose de MapPoint 2009.
Il suffit d'avoir deux colonnes : Ville A / Ville B (colonne 2 et 6 dans le code) :
VB:
Private Sub Distance()
Dim objApp As New MapPoint.Application
Dim objMap As MapPoint.Map
Dim objRoute As MapPoint.Route
Dim objLoc1 As MapPoint.Location
Dim objLoc2 As MapPoint.Location
Set objApp = CreateObject("MapPoint.Application.EU.16")
objApp.Visible = False
Set objMap = objApp.NewMap
Set objRoute = objMap.ActiveRoute
Worksheets("Feuil1").Cells(1, 7).Value = "Dist routière (kms)"
Worksheets("Feuil1").Cells(1, 8).Value = "Dist oiseau (kms)"
LigneActive = 2
Do While Worksheets("Feuil1").Cells(NReadRow, 2) <> ""
'Définition des deux points sur la carte
Set objLoc1 = objMap.FindResults(Worksheets("Feuil1").Cells(LigneActive, 2)).Item(1)
Set objLoc2 = objMap.FindResults(Worksheets("Feuil1").Cells(LigneActive, 6)).Item(1)
'Placement des points et calcul de la distance
objRoute.Waypoints.Add objLoc1
objRoute.Waypoints.Add objLoc2
objRoute.Calculate
'Distance routière entre les deux villes
Worksheets("Feuil1").Cells(LigneActive, 7) = objRoute.Distance
'Distance à vol d'oiseau
Worksheets("Feuil1").Cells(LigneActive, 8) = objMap.Distance(objLoc1, objLoc2)
objRoute.Clear
LigneActive = LigneActive + 1
Loop
objMap.Saved = True
Set objApp = Nothing
Set objMap = Nothing
Set objLoc1 = Nothing
Set objLoc2 = Nothing
Set objRoute = Nothing
End Sub
Pour 1200 enregistrements, 2min pour obtenir toutes les distances.
Attention pensez à référence MapPoint. (Outils > Références...)
Cordialement. Si des personnes sont intéressées pour en savoir plus et que ça reste dans mes humbles cordes, n'hésitez pas.
Bonne journée.