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 !!
 
C

Compte Supprimé 979

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

Bonjour jeremych,
Je ne suis pas certain que Windows en bootcamp suffise
Si tu as une erreur a ce niveau, c qu'il te manque une bibliothèque, a regarder dans les références de vba project
A+
 

Jeremych

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

Je viens même de tester avec un pc windows d'un ami et toujours le même problème, par contre j'ai réussit à récuperer la V 2.0 sur une des pages précedente et là ça fonctionne parfaitement. Pourrais-tu poster la V 2.5 pour avoir les corrections de bug et le mode multidestination qui fonctionne?
Merci d'avance
 
Dernière édition:

Jeremych

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

Est ce que vous pensez que le solver excel peut choisir et redefinir le meilleur itinéraire pour avoir le temps parcouru minimum?
Je pense notamment si on met au départ et à la destination le même lieu et qu'on laisse au solveur le choix du trajet le plus cours pour passer par les "x" destinations intermédiaires.

Bien cordialement.
 
C

Compte Supprimé 979

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

Bonjour,

Je viens même de tester avec un pc windows d'un ami et toujours le même problème, par contre j'ai réussit à récuperer la V 2.0 sur une des pages précedente et là ça fonctionne parfaitement. Pourrais-tu poster la V 2.5 pour avoir les corrections de bug et le mode multidestination qui fonctionne?
Merci d'avance
Désolé, mais la dernière version 2.06 est fonctionnelle, je ne vois pas d'où vient ton problème !?
Peux-tu nous mettre le fichier avec les données enregistrées, pour que je vérifie ?
 

Jeremych

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

C'est bon j'ai finalement réussit à utiliser la V2.0.6 en la retelechargeant plusieurs fois.

Est ce que vous pensez qu'on peut utiliser le solver excel avec ce document excel afin qu'il puisse choisir et redefinir le meilleur itinéraire pour avoir le temps parcouru minimum?
Je pense notamment si on met au départ et à la destination le même lieu et qu'on laisse au solver le choix du trajet le plus cours pour passer par les "x" destinations intermédiaires.

Bien cordialement.
 

peirgwnael

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

Bonjour,

Super macro, merci beaucoup. C'est pour ca que fait un petit retour.

J'ai fait une modif à cause d'un bug avec la version 2.06 d'heure mal récupérée (affiche 1 heure au lieu de 1 heure 30 par exemple).

J'ai utilisé le champ duration.value plutot que duration.text (il faut attraper la ligne suivante dans les appels ConvDurée).

Et avec la méthode suivante, on récupère le temps de trajet en secondes.
Il ne reste plus qu'à diviser par 24 à la sauvegarde et le tour est joué.

Function ConvDurée(Txt As String) As Integer
Dim TestArray() As String
TestArray = Split(Txt, ": ")
ConvDurée = CInt(TestArray(1))
End Function

Cordialement
 

Cdeps

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

Bravo pour ce code très précieux.

Par contre j'ai également le problème en Multi Départ Multi Destination, il me bloque au 2ème trajet avec une erreur 1004
dans InscriptionAdr() à la ligne
sTmp = ShtS.Range("A" & LigF).Value

J'ai mis en Départ et Destinations que les longitudes latitudes.

Je n'ai pas tout lu, est-ce quelqu'un a trouvé le problème ?
 

lems67

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

Bonjour,

merci pour cette belle macro bien utile

J'ai juste un bug pour lequel je ne trouve pas la solution : lorsque la durée du trajet est comprise entre 1 et 2 h (ex 1h15min), la macro renvoie systématiquement 1h00 dans l'onglet sauvegarde.

Merci si quelqu'un pouvait m'aider avec ce souci
 

grisan29

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

Bonjour catrice :cool:, piga25 :cool:, brunoM45 :cool: et le forum

catrice merci d'avoir lancer le post:cool:

piga25 merci de ton intervention :cool:

brunoM45 :cool:magnifique version que la 2.06 :cool:

fonctionne nickel sur windows8.1 64b et office 2013
les liens sont très fonctionnel :cool:

Merci Beaucoup

Pascal
 

Cdeps

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

fonctionne nickel sur windows8.1 64b et office 2013
les liens sont très fonctionnel :cool:

Je suis sur Office 2013 serveur et le multi Départ / Multi destination ne fonctionne pas chez moi.
Tu es certain d'avoir tout testé grisan29 ???

C'est frustrant car c'est un bon petit programme, j'en ai super besoin et ça ne marche pas sur la partie qui m'interesse le plus.
Pour la petie histoire je dois définir des forfaits déplacements pour chaque code postaux en fonction de 4 agences réparties sur un territoire.

Je dois ensuite faire la même opération pour du transport de matériel et pour des expéditions de pièces.
Imaginez le bonheur si je pouvais exploiter le multi départ/multidestination.
 

octu

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

Bonjour,
FELICITATION pour ce beau travail.

une petite suggestion de modification, si on ne saisi que le nom des villes dans DESTINATIONS

Code:
Sub Multi_Destinations()
  Dim ShtDep As Worksheet, ShtDes As Worksheet
  Dim IncDes As Long, IncRqt As Long
  Dim LigFinDep As Long, LigFinDes As Long, Col As Integer
  Dim sLat As String, sLong As String
  Dim PauseTime, Start
  ' Désactiver la checkbox de détail du parcours
  ' Ne sert à rien dans ce cas et fait gagner du temps
  Sheets("Itinéraire").CheckBox1.Value = False
  ' Initialiser le numéro de la boucle
  IncRqt = 0
  ' Définir la variable objet de la feuille Destinations
  Set ShtDep = Sheets("Départs")
  Set ShtDes = Sheets("Destinations")
  Col = ShtDes.Columns("H").Column  ' Colonne de la latitude
  ' Avec la feuille Itinéraire
  With Sheets("Itinéraire")
    ' Vérifier si une saisie de coordonnées Latitude/Longitude à étgé faite
    If .Range("DepLat").Value <> "" And .Range("DepLong").Value <> "" Then
      sLat = Replace(.Range("DepLat").Value, ",", ".")
      sLong = Replace(.Range("DepLong").Value, ",", ".")
      .Range("DepVille").Value = sLat & "," & sLong
    End If
    ' Vérifier que l'adresse de départ a bien été saisie
    If .Range("DepVille") = "" Then
      .Range("DepVille").Select
      MsgBox "Vous devez impérativement mettre le code postal + la ville de départ", vbCritical, "ATTENTION ..."
      Exit Sub
    End If
    ' Trouver les lignes de fin de la feuille de Destinations
    'LigFinDes = Application.Max(ShtDes.Range("F" & Rows.Count).End(xlUp).Row, ShtDes.Range("H" & Rows.Count).End(xlUp).Row)
    ' ### correction du 04/02/2014
    '### ICI MA MODIF

LigFinDes = Application.Max(ShtDes.Range("F" & Rows.Count).End(xlUp).Row, ShtDes.Range("E" & Rows.Count).End(xlUp).Row, ShtDes.Range("H" & Rows.Count).End(xlUp).Row)
   '### FIN MODIF
    ' Pour chaque adresse de destination
    For IncDes = 2 To LigFinDes
      ' Afficher le calcul qui se fait
      Application.StatusBar = "Calcul itinéraire :" & IncDes & "/" & LigFinDes - 1 & " destinations"
      ' Inscrire le nombre de requête calculée
      .Range("NbRqt").Value = IncRqt
      ' Insère les adresses dans les cellules ou les coordonnées
      ' Si la colonne contient une coordonnée
      If ShtDes.Cells(IncDes, Col) <> "" Then
        ' On effectue le calcul sur les coordonnées
        sLat = Replace(ShtDes.Cells(IncDes, Col), ",", ".")
        sLong = Replace(ShtDes.Cells(IncDes, Col + 1), ",", ".")
        .Range("FinVille").Value = sLat & "," & sLong
      Else
        ' sinon, calcul sur adresse
        .Range("FinAdr").Value = ShtDes.Cells(IncDes, 4)
        .Range("FinVille").Value = Format(ShtDes.Cells(IncDes, 5), "00000") & ", " & ShtDes.Cells(IncDes, 6)
      End If
      ' lancer la macro pour calculer l'itinéraire
      Call ItinéraireGoogle
      ' Incrire les bonnes valeurs (adresse + ville) dans la feuille itinéraire
      Call InscriptionAdr
      ' Sauvegarde l'itinéraire dans la feuille sauvegarde
      Call Sauvegarde
      ' temporisation
      PauseTime = .Range("Tempo").Value   ' Définit la durée
      Start = Timer    ' Définit l'heure de début
      DoEvents
      Do
Loop Until Timer > Start + PauseTime  ' Définit la fin
' Incrémenter le nombe de requête calculée
IncRqt = IncRqt + 1
    Next IncDes
  End With
  With Sheets("Sauvegarde")
    .Activate
    .Range("A" & 1 + IncDes).Select
  End With
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
274

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T