Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour calculer la distance entre deux villes via google maps

platina

XLDnaute Nouveau
Bonjour !

Je souhaite créer une macro utilisant google maps pour calculer la distance (via la route, et non à vol d'oiseau) entre deux villes ;
Disons que j'ai le nom ou code postal (ce qui rend la chose la plus simple!) de la première ville en A1 et le nom ou code postal de la seconde ville en A2.
Comment faire pour afficher la distance entre les deux en A3 ?

Merci beaucoup !!
 

Glaglagla

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour ,

Merci beaucoup, beaucoup, beaucoup pour cet outil vraiment complet, efficace et très bien conçu. J'ai fait tourner la macro sur près de 1000 destinations (partant d'un même point) et je n'ai eu aucun pb. A part une erreur au milieu qui, après recherche, venait en fait de l'adresse mal renseignée.

J'ai une petite suggestion : lors de la copie vers l'onglet sauvegarde, serait-il possible de rapatrier également les informations des colonnes "Nom" et "Prénom". Pas fondamentalement gênant car je peux les recroiser avec les adresses par la suite, mais cela serait plus pratique, je n'aurai qu'à exporter l'onglet "sauvegarde" et hop!

Encore merci pour ces efforts mis à disposition de la communauté!

Gladys
 

Glaglagla

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour,

Au bout d'un certain nombre de requêtes, j'ai le message d'erreur suivant:


"Google

Vous semblez utiliser un navigateur non compatible

Les anciens navigateurs peuvent compromettre votre sécurité. De plus, ils sont lents et ne sont pas compatibles avec les dernières fonctionnalités de Google Maps. Pour accéder à Google Maps, vous devez utiliser un navigateur récent.

En savoir plus"

J'ai pourtant IE 11...

Une idée?
 

guig51

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour et merci pour cette super macro,

Malheureusement j'ai un souci lors de son utilisation. j'arrive à calculer un itinéraire simple mais le multi ne fonctionne pas. J'ai une erre de compatibilité de type. Le bug semble venir de cette fonction lorsque je clique sur débogage:
Public Function UTF8_Decode(ByVal sTexte As String) As String
Dim lLength As Long
Dim sBuffer As String
sTexte = StrConv(sTexte, vbFromUnicode)
lLength = MultiByteToWideChar(CP_UTF8, 0, StrPtr(sTexte), -1, 0, 0)
sBuffer = Space$(lLength)
lLength = MultiByteToWideChar(CP_UTF8, 0, StrPtr(sTexte), -1, StrPtr(sBuffer), Len(sBuffer))
UTF8_Decode = Left$(sBuffer, lLength - 1)
End Function

Cependant en essayant d'aller plus loin, je pense que le bug réel vient de
Option Explicit

' ### Ajout du 17/11/2014
#If VBA7 Then ' VBA 64bits
Private Declare PtrSafe Function MultiByteToWideChar Lib "Kernel32" _
(ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
#Else
Private Declare Function MultiByteToWideChar Lib "Kernel32" _
(ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
#End If

Private Const CP_UTF8 = 65001

l'instruction après le else s'affiche en rouge. Cela a l'air de venir de la version utilisée. J'utilise excel 2016 64 bits. Serait il possible que le programme ne fonctionne que sous 32 bits ou qu'il y ait un problème dans l'instruction qui semble justement destinée à gérer les versions?

Merci pour votre aide
 
C

Compte Supprimé 979

Guest
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour,

On m'a toujours dit : "le mieux est l'ennemi du bien".... Excel 2016... vouloir toujours la dernière version

Perso aucune idée, elle fonctionne bien sur 64bits mais version antérieure.

Le code est ouvert, alors... bon courage
 

eriiic

XLDnaute Barbatruc
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour,

Tu devrais essayer en remplaçant le test par :
Code:
#If Win64 Then ' VBA 64bits

Ce lien n'existe plus :
Pour résumer, si vous écrivez du code 64 bits et que prévoyez de l’utiliser dans des versions précédentes de Microsoft Office, il faut utiliser la constante de compilation conditionnelle VBA7. En revanche, si vous écrivez du code 32 bits dans Office 2010, ce code fonctionne tel que dans les versions précédentes d’Microsoft Office sans la constante de compilation. Si vous souhaitez être sûr d’utiliser des instructions 32 bits pour les versions 32 bits et des instructions 64 bits pour les versions 64 bits, la meilleure solution consiste à utiliser la constante de compilation conditionnelle Win64.

eric
 

phoenix974

XLDnaute Nouveau
Re : Macro pour calculer la distance entre deux villes via google maps

Bonjour BrunoM45

Tout d'abord merci bien pour ce super outil.

J'aimerais ton aide si possible:

J'ai créé une liste de 33 destinations possible dans l'onglet "Destination".

Lorsque je rentre une adresse l'onglet "Départ" et dans l'onglet "itinéraire" et que je clic sur multi destination, cela me calcule la distance pour les 33 itinéraires possible dans l'onglet "Sauvegarde".

J'aimerais pouvoir automatiser la recherche pour toutes les communes d'un l'onglet "Communes" que j'ai rajouté qui comprend toutes les communes de france (environ 37000) et copier la distance et le nom de la ville la plus proche (distance minimale) de l'onglet "Sauvegarde" dans les colonnes correspondant de l'onglet "Communes".

Merci d'avance pour ton aide
 

BLAIS

XLDnaute Nouveau
Bonjour,

je suis très néophyte pour excel et vous vous remercie de m'excuserez si je n'exprime pas bien ma demande.

Je suis sous excel 2013 et Windows 10.

Dans un fichier excel j'ai en feuille 1, un tableau avec déjà des données (des statistiques) , en feuille 2 j'ai des données qui me servent pour mon tableau en feuille 1 (je m'exprime mal, je sais...)
En feuille 3 je voudrais calculer la distance entre 2 villes et transférer chaque résultat dans une cellule de ma feuille le 1 (chaque résultat serait automatiquement inscrite dans la feuille 1 ou autre feuille et cela descendrait d'une cellule à la fois, pour chaque résultat (resultat sur A20, puis autre résultat sur A21 etc... pas claire à expliquer...) .
Pour ne pas compliquer la chose je souhaite juste la distance entre 2 villes et non entre 2 adresses complète, ni le temps de trajet. Je souhaiterais utiliser Googlemaps.

Cellule A1 : Ville de départ (ville française, pas besoin de l'étranger)

Cellule A2 : ville d'arrivée (ville française, pas besoin de l'étranger)

Cellule B1 & B2 : taper le code postal

Cellule C1 & C2 : qu'Excel m'offre les différente villes sous forme de liste. ou qu'il les affiche automatiquement et que je clic sur la ville choisi. Ou que si je tape le nom de la ville sans le code postal en B1&B2 qu'excel en tienne compte et ne bloque pas car je n'aurais pas indiquér le code postal (est ce possible ?)

Cellule D1 : distance parcourue : nb de kms parcouru

J'ai cherché et trouvé le fichier dont vous trouverez le lien ci-dessous joint mais cela ne fonctionne pas, quand je clic sur le bouton click il m'est affiché " impossible d'exécuter la macro " itinéraire(1).xls".Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macro soient désactivées", ou "itinéraire non trouvé" pourtant sur un trajet simple caen - paris par exemple..

Je ne sais pas ce qu'est une macro j'ai quand même pu via fichier >option>centre de gestion de la confidentialité> paramètre du centre de confidentialité >activer toutes les marcro mais rien n'y change, d'ailleurs quand je télécharge les fichier sur ce poste les macro sont bien actives mais excel me dit toujours activer la modification puis activer le contenu , ce que je fait, ça ne marche toujours pas.
j'ai cherché sur le net et trouvé cette vidéo sur YouT ( ) .. mais cela affiche que le plan et je n'ai pas besoin de cela. De plus j'ai fait comme il est expliqué mais quand je sélectionne Microsoft web browser, quand j'essaie de créer le tableau qui servirait a voir le trajet via Google maps, il m'est afficher "impossible d'insérer un objet". Donc je suis aussi bloqué de coté là .

j'ai utilisé tous les fichiers disponible sur ce post, excel me demande d'activer la modification, puis le contenu ce que je fais mais ça ne fonctionne pas.
j'ai enregistré mon excel en excel (prenant en charges les macro) cela ne change rien.
Je suis en xlsx, j'ai cru comprendre qu'il fallait être en xls, toujours rien



Si de bonnes âmes peuvent m'aider pas à pas ...

Je vous remercie par avance.

J'ai vu le message de Cdep le 13/11/2014 qui a aussi excel 2013 et qui n'y arrivait pas non plus mais le lien qu'on lui propose et en page 1 de ce post (qui ne fonctionne pour moi, comme tous les tableaux disponible) et je n'ai pas vu de retour de Cdep pour dire que cela fonctionnait.
Bien cordialement.

http://www.cjoint.com/c/FHcwoLFt8Wu

j'ai trouvé ce lien : http://www.cjoint.com/c/FHmiqx6xi5v

mais ce lien ne fonctionne pas voici ce qu'il m'affiche : http://www.cjoint.com/c/FHmmHB8gp0u
cela a pu marché une ou deux fois, mais après même si le message reste , et cela ne fonctionne pas : la distance entre caen(14000) et flers (61100) n'a jamais fait 308 kms mais plutôt ~ 60 kms.

Merci de votre aide...
 

Careine

XLDnaute Nouveau
Bonsoir,
J'ai à peu près le même besoin que vous. Je souhaiterais calculer la distance entre deux adresses avec comme résultat, uniquement le nombre de Kms.
J'ai fait la manip de la video ci-dessus : chez moi elle fonctionne, mais ce n'est pas exactement ce que je recherche (je n'ai pas besoin de la carte qui s'affiche. La donnée que j'attends est bien sur la fenêtre d'affichage, mais il faut la reprendre manuellement ....)
J'ai également tester à peu près tous les fichiers proposés dans ce post, mais aucun ne fonctionne correctement (un grand bravo au passage, aux rédacteurs des différents messages).
Avez-vous (BLAIS) trouvé une solution ????
Merci pour votre aide .....
 

BLAIS

XLDnaute Nouveau
Bonsoir,
non j'ai abandonné car je n'arrivais pas à faire ce qui est indiqué dans la video ci-dessous (qui comme vous ne correspondait à ma demande, car entre autre pas besoin de la carte) et pareillement que vous, les différents fichier en PJ ne fonctionnent pas, donc je me "pastiche" chaque distance sur Google maps, si quelqu'un peut relancer un peu la demande...
dans un fichier de mes indemnités kilométriques sous excel je voulais inscrire le lieu de départ et d'arrivé pour connaître le nombre de kms qui se traduit en indemnité kilométrique et avec chaque mois une addition des mois précédant (kms et indemnité kilométrique), j'ai ce tableau mais sans le calcul des kms.
cordialement.
 

Modeste geedee

XLDnaute Barbatruc
Bonsour® Heu ???
il y a une déclaration a faire ????
une case à cocher quelque part ???
 

BLAIS

XLDnaute Nouveau
Bonjour ,
merci takiac, ca marche nickel pour moi (avec le tableau joint) , est il est possible de l'adapter sur mon tableau joint au faut il que je fasse pour chaque cellule la formule avec le cellule à modifier.
car quand j'ai fait un copier collé dans mon tableau au mois d'octobre je crois cela me mettais #valeur.
Merci de votre retour.
cdt.
 

Pièces jointes

  • IK MIS A JOUR.xlsx
    101 KB · Affichages: 311

BLAIS

XLDnaute Nouveau
bonjour tatiak,
en faite je crois que je me suis mal fait comprendre (encore une fois, Pfff, quel nul...)
en fait j'ai mes départs en colonne C (qui sont très souvent les mêmes) et mes arrivées en colonne D, est il possible que quand on tape le départ et l'arrivée la distance se calcul automatique en colonne E et que si j'insert une ligne que le calcul se fasse également ? (cela permettrait de gagner bcp de temps de lieu de taper à coté du tableau le départ et l'arrivée et a reporter la distance calculée, je suis un fainéant et je cherche la simplicité...hihihi)
merci de votre retour si c'est possible..
Bien cordialement.
 

Pièces jointes

  • IK MIS A JOUR.xlsx
    101.1 KB · Affichages: 159

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…