Calcul de distance automatique avec MapPoint

Compress

XLDnaute Occasionnel
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) :

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.
 

jeje59

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour Compress,

Ce code est tout simplement génialissime

J'ai bien recopié ton code et référencé Microsoft MapPoint 16.0 Object Library (Europe) mais j'ai malheureusement un code erreur:mad::mad: 1004 "Erreur définie par l'application ou par l'objet". Et pas miyen de résoudre le problème.....

Pourrais-tu m'aider ?:confused:

Merci d'avance à toutes et à tous !:D
 

Ericfourm

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour Ydemarin et merci pour tout tes docs qui m'ont jusqu'alors été très utiles

Je recherche le moyen de localiser des villes dans toute l'Europe, mais je n'ai pas d'adresse à spécifier.
Sais-tu donc s'il est possible de localiser ces villes sans détenir d'autres informations?

Merci d'avance,

Eric
 

Discussions similaires

Statistiques des forums

Discussions
314 717
Messages
2 112 169
Membres
111 449
dernier inscrit
jhugot