Calcul de distance automatique avec MapPoint

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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😡😡 1004 "Erreur définie par l'application ou par l'objet". Et pas miyen de résoudre le problème.....

Pourrais-tu m'aider ?😕

Merci d'avance à toutes et à tous !😀
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour