Tatiak

Excel, Vba, Vbs


09 mars 2017

Distancier

Pour répondre à un besoin régulièrement exprimé, voici un "distancier" qui permet d'avoir des informations sur les trajets entre 2 villes.
La démo proposée ici utilise plusieurs méthodes :

  • les api de GoogleMap
  • le décodage json
  • le calcul de distance entre 2 points GPS


Voyons en détails :
2 api de GoogleMap sont utilisées :

  •  'api/distancematrix' pour obtenir un trajet GoogleMap en mode 'driving' (voiture)
  •  'api/geocode/' pour obtenir le positionnement GPS indiqué par GoogleMap


Dans cette démo, l'option '/json' est utilisée, ce qui va nous permettre de lire facilement l'info retournée par le serveur.

Pour décoder le json obtenu, une fonction 'oRecordSet' permet de placer cette info dans un 'objet' facilement lisible élément par élément pour affichage.

On aurait pu s'arrêter là, mais il est des cas où GoogleMap ne propose pas de trajet 'driving' (pour des distances longues notamment, par exemple un Paris-Pékin en voiture n'est pas pris en charge par GoogleMap )
Dans ces cas, il m'a semblé intéressant de calculer la distance "à vol d'oiseaux" entre ces 2 villes. Pour cela la 2ème api de GoogleMap nous retourne les coordonnées GPS via '/json' et un calcul simple nous donne la distance en ligne droite.

L'utilisation du fichier proposé est simple, il suffit de saisir les adresses de départ et d'arrivée en colonnes A et B (sur 2000 lignes possibles) pour obtenir :

  • la distance 'en ligne droite'
  • la distance du trajet GoogleMap proposé
  • la durée du trajet GoogleMap proposé
  • et le complément d'adresse lu : pour 'Brest' Google propose 'Brest, France'


Avec cette démo, il sera donc facile, par exemple à un professionnel itinérant (genre trajets à la journée de 200 à 400 km autour de sa base), de calculer ses frais de déplacement courants.

Bon téléchargement, et laissez-moi vos commentaires!
Pierre


Téléchargement de : Distancier_json.xlsm

 

Edit du 03/03/2017 : Pour répondre à Dominique, voici une autre version pour des séries de distances : on colle une liste des départs-arrivées en colonnes A et B et on clique sur le bouton pour avoir les distances et durées des trajets Google.

Téléchargement de : Distances_Json_série.xlsm

Posté par tatiak à 09:48 - Excel-Cartographie - Commentaires [7] - Permalien [#]

Commentaires sur Distancier

    bonjour, super travail. je viens de poster sur le forum excel download une demande d'évolution avec un fichier modèle. franchement je ne suis pas capable de faire ce que tu sais faire !!! si tu peux m'aider... merci

    Posté par dominique, 31 mars 2017 à 10:49 | | Répondre
    • Bonjour,
      Il est nécessaire de saisir un couple départ/arrivée dans les colonnes A et B
      Pour une liste de 10 adresses => 10x10=100 lignes à saisir
      Pierre

      Posté par tatiak, 31 mars 2017 à 11:03 | | Répondre
  • Bonjour,
    Pour moi, le distancier ne fonctionne pas du tout. faut-il une clé d'activation google pour utiliser cette API ?

    Posté par JCM63, 03 avril 2017 à 01:09 | | Répondre
    • Pas de nécessité de clé, en principe il suffit "d'activer les macro", une version récente d'Excel et une connexion internet active.

      Posté par tatiak, 03 avril 2017 à 08:47 | | Répondre
      • Merci pour la réponse, mais rien.
        En mode pas à pas principal, office 2013, la variable "Json" reste vide après l'instructions : Set Json = oRecordSet(Site).
        En fait, je sors de la fonction oRecordSet après l'instruction
        Set ScriptControl = CreateObject("MSScriptControl.ScriptControl")

        Posté par JCM63, 07 avril 2017 à 14:33 | | Répondre
        • Ok, vous avez donc un problème d'installation de MSscript.ocx sur votre PC.
          Il suffit de réinstaller cette ocx proprement.

          Posté par tatiak, 08 avril 2017 à 17:02 | | Répondre
  • En fait d'après mes recherches MScript.ocx ne fonctionne que sur les version Office 32bits. Après une réinstallation en version 32bits, tout est OK.
    Merci.

    Posté par JCM63, 09 avril 2017 à 11:21 | | Répondre
Nouveau commentaire