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.
 

Compress

XLDnaute Occasionnel
Re : Calcul de distance automatique avec MapPoint

Bonjour Oli2Bo à mon avis le code de Dominou était bon pour la partie utilisation de MapPoint, par contre il devait avoir un problème de type de données pour la latitude et la longitude.

Il faudrait déclarer tes lat / lon en Double.

As-tu un exemple de fichier avec le code que tu as tenté d'adapter ?

Cordialement.
 

ydemarin

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour,

Pour ceux que cela interesseraient, voici ce que j'ai réussi à faire avec Excel et MapPoint.

Si certains peuvent m'aider à ajouter une variable (une bonne vingtaine: groupe d'adresse, type d'adresse) pour chaque adresse afin de les différencier avec des clicks infos différents sur la carte je suis preneur.

J'ai pas encore intégré la solution précisée pour la réduction des vitesse mais c'est aussi une contrainte que j'avais.

Conçu sous excel 200è et avec Mappoint 2006.
 

Pièces jointes

  • Outil MapPoint-Version1.xls
    402 KB · Affichages: 398

Oli2bo

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour à tous et merci pour vos réponses.

J'ai oublié de vous tenir au courant de mes évolutions. Je suis parvenu à ce que je cherchais, avec un bête Do while/loop, à partir de la ligneactive. J'ai donc pu traiter 7140 enregistrements en une vingtaine de minutes, impecc ! De là, j'ai pu mesurer des vitesses moyennes sur l'ensemble des parcours car j'avais aussi une donnée temps.

Ensuite, j'ai recomposé un autre bout de code pour automatiser la création d'isochrones de différentes durées (8, 10, 12, 15, 20 minutes) sur un ensemble de points donnés par coordonnées Lat/lon. Là encore c'est parfait pour faire des opérations de routine.

Revenez vers moi si vous êtes intéressés !

Cordialement,

Oli
 

ydemarin

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour à tous et merci pour vos réponses.

J'ai oublié de vous tenir au courant de mes évolutions. Je suis parvenu à ce que je cherchais, avec un bête Do while/loop, à partir de la ligneactive. J'ai donc pu traiter 7140 enregistrements en une vingtaine de minutes, impecc ! De là, j'ai pu mesurer des vitesses moyennes sur l'ensemble des parcours car j'avais aussi une donnée temps.

Ensuite, j'ai recomposé un autre bout de code pour automatiser la création d'isochrones de différentes durées (8, 10, 12, 15, 20 minutes) sur un ensemble de points donnés par coordonnées Lat/lon. Là encore c'est parfait pour faire des opérations de routine.

Revenez vers moi si vous êtes intéressés !

Cordialement,

Oli

Bonjour Oli2bo,

Je suis intéressé par la partie isochrones que je trouve pertinente dans Mappoint mais que j'aurais voulu intégrer à mon outil précédement transmis. Serait-il possible de me transmettre un classeur en exemple?

Merci d'avance.

D'ailleurs je cherche à différencier le positionnement d'adresses par une variable avec un click-infos différents à chaque fois.

Qui pourrait m'aider à travailler sur ce sujet?

Merci à tous.

Cordialement,
 

Oli2bo

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour,

Voici en pièce jointe mon classeur utilisé pour les différentes zones de temps de conduite. Il est tellement archaïque qu'il faut lancer le VB editor et lancer la macro de là, je n'ai pas fait de bouton...

Etant donné que je ne connais rien du tout en VB (tout ce que je fais est par tâtonnements et essais-erreurs), je ne vois pas comment faire pour demander à Mappoint la création d'un clic-info différent pour chaque point...

Oli
 

Pièces jointes

  • calcul zones temps de conduite.xlsm
    18.5 KB · Affichages: 196
Dernière édition:

ydemarin

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour à tous,

J'ai pas mal avancé sur mon travail.

J'ai désormais la possibilité de positionner sur une cartes des click-infos par tournée en les distinguant.

Je rencontre un difficulté que me renvoie excel avec un bug que je n'arrive pas à résoudre sur la macro de la feuille localiser les adresses: "erreur d'éxécution () l'élément recherché n'existe pas. Utilisez un nom ou un autre numéro d'index valide."

QUi peut m'aider?
 

Pièces jointes

  • Outil MapPoint-Version2.xls
    745.5 KB · Affichages: 294

sesa

XLDnaute Occasionnel
Re : Calcul de distance automatique avec MapPoint

bonsoir à tous

c'est dommage que la demande de Ydemarin n'a pas été prise en compte car c'est un travail de titan qu'il a mené.
bravo et chapeau bas :)
à tout hasard, avec ce fichier, quand on clique sur "optimiser" une tournée, map point va t il prendre en considération le trajet plus efficace ?
à vous lire
 

ydemarin

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour,

1) j'ai réussi à résoudre mon problème et mon outil tourne désormais à plein régime. Je peux le faire passer sans problème!

2) Optimiser une tournée, c'est le trajet qui permet de réaliser le trajet le plus court en distance (km) en prenant en compte les ocntraintes (lieu de départ, lieu d'arrivée, etc.). Je n'ai pas cherché à le faire en durée (il faudrait idéalement prendre en compte les conditions de circulations)
 

sesa

XLDnaute Occasionnel
Re : Calcul de distance automatique avec MapPoint

bonjour à tous,

Ydemarin, quand je parle d'optimiser, map point me fera prendre le chemin le plus court pour mes tournées de livraison.
nous sommes bien d'accord ?
ex départ : lyon
arrivée : grenoble, avec différents clients à livrer ce qui veut dire que les données renseignées dans le désordre seront prises en comptes et classer dans un ordre bien précis de manière à optimiser le parcours de livraison.
peux tu confirmer ?
à quoi sert la colonne H "tournée" dans la feuille --> optimiser une route.
il serait sympa de ta part de mettre ton fichier final.;)
merci à toi
à te lire
 

ydemarin

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

L'outil est trop volumineux même en zip pour que je puisse te le faire parvenir dans la discussion.

Envoies moi un message en MP et donne moi une adresse mail.


je te confirme que le chemin donné par Mappoint sera bien le plus court dans le sens optimisé (éviter les aller retours inutiles entre deux points de livraison)


En pratique, je souhaitais utiliser cet outil pour travailler sur plusieurs tournées en même temps. Et donc j'ai conservé la colonne pour distinguer les tournées. (utilisation de d'autres fichiers excel). Ici pas d'utilité majeure. par contre, je peux sur un territoire données localiser des points de livraison affectée à des tournées différentes et éventuellement les identifier pour les optimiser (management visuel sur carte avec la partie localiser des adresses.)!

Cordialement,
 

sesa

XLDnaute Occasionnel
Re : Calcul de distance automatique avec MapPoint

bonsoir à tous,

après avoir rempli "la liste des arrêts" ( 20 adresses) feuille optimiser une tournée, je valide sur le bouton Carte Map Point et j'ai ce message : microsoft office attend la fin d'exécution d'une action olé d'une autre application !
que signifie ce message ?
en revanche avec 3 adresses pas de souci mais avec une quinzaine ça bloque sur le message et impossible de fermer excel.
une astuce à me proposer ?
merci
 

MJ13

XLDnaute Barbatruc
Re : Calcul de distance automatique avec MapPoint

Bonjour Sesa

Le problème avec MapPoint, c'est que c'est payant, il me semble. Donc la chance d'avoir quelqu'un qui ai MapPoint, qui sache programmer en VBA pour ton problème et qui fréquente le forum est très faible.
 

huile

XLDnaute Nouveau
Re : Calcul de distance automatique avec MapPoint

Bonjour à tous,

ici on travaille avec un nouvel objet Map dès l'ouverture. Mais pouvez-vous me dire, comment on peut laisser à l'ouverture (à l'aide d'un explorateur, par exemple, qui ne prendra que les *.ptm) le choix de la carte sur laquelle il va géolocaliser? Merci d'avance...
 

Discussions similaires

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki