Comment convertir une adresse postale en coordonnées GPS sur Excel (Latitude et longitude) ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comment obtenir des coordonnées GPS (latitude et longitude) à partir d’une adresse postale. Nous verrons que pour cela, il sera nécessaire de construire une petite fonction personnalisée qui repose sur l’utilisation du service web OpenStreetMap.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Comment convertir des adresses postales en coordonnées GPS

Comme nous venons de le voir dans l’introduction de ce tutoriel, nous allons voir comment convertir une série d’adresses en coordonnées GPS :

Excel formation - convertir adresse postale en coordonnées gps - 01

Pour pouvoir convertir une adresse postale en coordonnées GPS, le moyen le plus rapide et le plus simple est d’utiliser un service web, que nous pourrons ensuite analyser pour extraire la portion d’information qui nous intéresse.

Il existe de nombreux services sur internet qui propose de réaliser cette conversion, le plus célèbre étant incontestablement celui de Google.

Celui-ci propose en effet une API spécifique qui fournit en autres choses ce genre de service.

Une API est une interface de programmation d’application, comprenez par là un ensemble d’outils à destination principale des développeurs.

Pour simplifier, et notamment pour éviter d’avoir à souscrire à cet API auprès de Google, nous allons donc découvrir une solution alternative.

Nous allons donc utiliser les services du principal concurrent de Google Maps, à savoir OpenStreetMap, que nous retrouvons à l’adresse suivante :

https://www.openstreetmap.org/

Nous commençons donc par nous y rendre, puis nous saisir la première adresse de notre liste, afin d’analyser le comportement opéré :

Excel formation - convertir adresse postale en coordonnées gps - 02

Tout d’abord, nous pouvons constater qu’OpenStreetMap a bien identifié l’adresse demandée.

En plus de cela, nous pouvons nous apercevoir que cette adresse se retrouve directement saisie dans la barre d’adresse de la page :

Excel formation - convertir adresse postale en coordonnées gps - 03

Nous pourrons donc facilement appeler cette adresse en utilisant le lien suivant :

https://www.openstreetmap.org/search?query=5%20Avenue%20Anatole%20France%2075007%20Paris

Si nous recopions uniquement cette partie dans la barre d’adresse, nous pourrons constater que la page sera automatiquement redirigée à l’adresse :

https://www.openstreetmap.org/search?query=1%20Avenue%20Simon%20Bolivar%2075019%20Paris#map=19/48.87383/2.38484

La partie ajoutée correspond justement à ce qui nous intéresse, c’est-à-dire les coordonnées GPS.

 

2. La fonction COORDONNEESGPS()

Pour générer un équivalent de cette adresse dans Excel, nous pouvons simplement concaténer les différents éléments en utilisant une esperluette :

="https://www.openstreetmap.org/search?query="&A8 

Excel formation - convertir adresse postale en coordonnées gps - 04

Cela étant fait, nous allons pouvoir analyser l’URL affichée dans la barre d’adresse pour obtenir les coordonnées GPS.

Malheureusement, il ne sera pas possible d’obtenir cette information directement avec une fonction Excel.

Mais pas d’inquiétude, nous allons développer notre propre fonction directement en VBA.

Et pour que ce tutoriel soit accessible à tout le monde, nous allons revenir dans le détail sur aspect de cette dernière.

Si vous souhaitez aller plus loin dans la découverte du langage VBA, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.

Pour commencer, nous allons lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.

Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :

Excel formation - convertir adresse postale en coordonnées gps - 05

VBE s’ouvre alors et nous allons commencer par créer un nouveau module.

Un module est une feuille de saisie de code dans laquelle nous allons pouvoir saisir nos macros et fonctions.

Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module :

Excel formation - convertir adresse postale en coordonnées gps - 06

Une fois le module inséré, nous pouvons créer notre fonction, en utilisant le mot-clé Function, suivi du nom de la fonction :

Function coordonneesGPS()
 
End Function

Excel ajoute ensuite la dernière ligne (End Function), et tout ce que nous viendrons saisir entre ces deux lignes sera exécuté lorsque nous appellerons cette fonction.

Pour commencer, nous allons passer un argument à la fonction, en le saisissant simplement entre les parenthèses.

Ici, il s’agira de venir saisir l’adresse de la page web, nous appelons donc cet argument URL et nous le typons en tant que String, c’est-à-dire une chaine de caractères :

Function coordonneesGPS(URL As String)
 
End Function

 

3. L’objet VBA Internet Explorer

Maintenant que la fonction est préparée, nous allons pouvoir lancer la page correspondante à l’URL afin d’analyser la redirection (la nouvelle adresse d’accès à la page dans laquelle OpenStreetMap ajoute les coordonnées GPS).

Pour ce faire, nous allons devoir créer un objet qui va permettre de lancer la page web.

Cet objet, nous allons l’appeler web, et le définir en tant que « InternetExplorer.Application » :

    Dim web As Object
    Set web =  CreateObject("InternetExplorer.Application")

Pour lancer la navigation, nous utilisons maintenant la méthode navigate de cet objet web avec pour paramètre l’URL cible :

    web.navigate URL

Il ne reste plus qu’à attendre le chargement complet de la page :

    Do While web.busy And web.readyState <> 4
        DoEvents
    Loop

Ensuite, nous pouvons récupérer la redirection de l’adresse avec la propriété locationUrl :

    coordonneesGPS = web.locationUrl 

Pour simplifier la lecture du résultat, nous ne récupérons ici que la partie qui a été ajoutée à la fin, en supprimant tout ce qui se trouve tout d’abord tout ce qui se trouve avant le symbole dièse :

coordonneesGPS = Right(coordonneesGPS,  Len(coordonneesGPS) - InStr(coordonneesGPS, "#"))

Et dans un deuxième temps, tout ce qui se trouve avant le slash :

coordonneesGPS = Right(coordonneesGPS,  Len(coordonneesGPS) - InStr(coordonneesGPS, "/"))

Nous ne pouvons pas extraire directement ce qui se trouve après le slash, étant donné que nous en retrouvons un grand nombre dans l’adresse complète.

Par contre, avant que la redirection ne soit effective, il est nécessaire d’attendre un peu de temps.

Pour cela, nous insérons une petite pause d’une seconde en utilisant la procédure que nous avions mise en place lors du tutoriel dédié :

    Sub pause(duree As Double)
    Dim finPause As Double
    finPause = Timer + duree
    Do While Timer < finPause
        DoEvents
    Loop
End Sub

Puis, nous pouvons insérer cette pause d’une seconde juste avant d’affecter la valeur de web.locationUrl à la fonction :

    pause (1)

Attention, la durée de cette pause est à adapter en fonction des conditions de travail : débit internet et ressources disponibles sur poste de travail.

En effet, le but de celle-ci est de permettre à OpenStreetMap de recentrer la page, ce qui peut demander un certain temps.

Et enfin, pour finir, nous pouvons fermer la session d’internet explorer avec un web.Quit :

    web.Quit

Nous pouvons maintenant tester la fonction directement sur la feuille de calcul en l’appelant comme n’importe quelle autre fonction :

=coordonneesGPS("https://www.openstreetmap.org/search?query="&A8 

Excel formation - convertir adresse postale en coordonnées gps - 07

Bien entendu, le temps d’exécution de ces fonctions va dépendre de plusieurs éléments :

  • La qualité de la connexion internet,
  • Les ressources disponibles

Sachant que chaque requête demandera au moins une seconde, qui correspond à la pause imposée.

 

4. Extraire la latitude et la longitude

Maintenant, nous pouvons extraire les informations de ce résultat pour obtenir la latitude et la longitude en fonction des adresses correspondantes.

Pour la latitude tout d’abord, il suffit d’extraire la partie située sur la gauche du slash, nous utiliserons donc les fonction GAUCHE() et TROUVE() :

=GAUCHE(B8;TROUVE("/";B8)-1)

Ensuite, pour la longitude, nous utiliserons bien évidemment la fonction DROITE() :

=DROITE(B8;NBCAR(B8)-TROUVE("/";B8))

Excel formation - convertir adresse postale en coordonnées gps - 08

 

5. Utiliser Google Maps (Mise à jour 24/01/2023)

La solution que nous venons de découvrir qui repose sur le service https://www.openstreetmap.fr/, n'étant plus fonctionnel en l'état, nous allons donc modifier la macro que nous puissions utiliser cette fois-ci https://www.google.fr/maps. Ce qui nous permettra de continuer de récupérer les coordonnées GPS à partir d'une simple adresse postale.

En effet, le problème de la méthode que nous avions mis en place, c'est que celle-ci reposait à la fois sur le service https://www.openstreetmap.fr/ (OSM) et à la fois sur Internet Explorer. Seulement, comme nous allons le voir juste après ces derniers sont devenus incompatibles l’un avec l’autre.

Si nous réutilisons la fonction coordonneesGPS() mise en place dans le tutoriel précédent, nous pourrons en effet nous rendre compte qu’effectivement Excel à bien lancé OSM sur IE, sauf qu’ici la recherche d’adresse échoue il n’est donc pas possible d’obtenir les coordonnées GPS de celle-ci.

Pour corriger ce problème, nous allons donc aller au plus simple en passant outre OSM et nous allons donc utiliser plutôt le service Google Maps.

 

   5.1. Modifier la fonction coordonneesGPS() pour utiliser Google Maps à la place d'Open Street Map

Pour cela, nous allons commencer par modifier l’argument utilisé dans la fonction coordonneesGPS pour pointer directement sur le bon service.

Nous allons donc remplacer :

 =coordonneesGPS("https://www.openstreetmap.org/search?query="&A8)  

Par :

 =coordonneesGPS("https://www.google.fr/maps/place/"&A8)  

Excel formation - convertir adresse postale en coordonnées gps - 01

Lorsque nous validons, nous pouvons constater qu’ Excel après avoir identifié l'adresse, a bien affiché la fenêtre d’Internet Explorer, mais n’est pas encore en mesure de récupérer les coordonnées GPS de celle-ci.

Nous allons maintenant modifier la fonction coordonnesGPS().

 

   5.2. Ajuster le temps de pause

Pour modifier la macro, nous allons lancer l’éditeur de macro en appuyant sur les touches [Alt]+[F11] du clavier.

Nous allons retrouver la fonction coordonnesGPS() mis en place précédemment dans le « Module1 » :

Excel formation - convertir adresse postale en coordonnées gps - 02

Nous n’allons pas revenir sur le fonctionnement de celle-ci, vous retrouver le détail de sa construction ici.

Pour commencer, nous allons nous intéresser à la ligne :

    pause (2)

Il s’agit en effet de la ligne permettant d’attendre que Google Maps mette en place la redirection de l’URL de la page internet avec les coordonnées GPS. Nous avions vu un peu plus tôt que le temps alloué à cette pause n’est pas suffisant. Nous allons donc la passer directement à 6 secondes en modifiant l’argument de celle-ci :

    pause (6)

Bien entendu, je vous invite à effectuer des tests sur votre propre poste de travail étant donné que le temps nécessaire va dépendre à la fois de la vitesse de la connexion internet, mais également de configuration de la machine sur laquelle la macro est exécutée.

 

   5.3. Récupérer les coordonnées GPS de l'adresse postale

Une fois la redirection effectuée, nous récupérons l’adresse affichée dans la barre d’URL d’Internet Explorer et nous la stockons dans la variable que nous appelons « redirection ».

Cette variable prend alors la valeur :

« https://www.google.fr/maps/place/5+Av.+Anatole+France,+75007+Paris/@48.8581951,2.2946885,17z/data=!3m1!4b1!4m5!3m4!1s0x47e66fe18ec97eb9:0x2eb4ebbfd111b16c!8m2!3d48.8581951!4d2.2946885 »

La partie qui nous intéresse est celle qui se trouve entre l’arobase et la barre oblique qui suit : « @48.8581951,2.2946885,17z/ »

Excel formation - convertir adresse postale en coordonnées gps - 03

Pour réduire la chaîne à ces valeurs, nous allons effectuer deux opérations :

  • En premier lieu, nous allons souhaiter ne conserver que la partie située après l’arobase. Pour cela, nous allons pouvoir utiliser la fonction Right() de VBA comme nous le verrons juste après.
  • Ensuite, nous allons splitter la chaîne de caractères ainsi obtenue en utilisant la virgule comme caractère de séparation. La fonction Split() que nous allons utiliser permet en effet de transformer une chaîne de caractères en un tableau qui contiendra plusieurs sous-chaînes de caractères. Ce tableau, nous allons le stocker dans la variable « redirectionSplitee », laquelle est typée en tant que Variant.

 

Nous remplaçons donc les lignes :

    redirection = Right(redirection, Len(redirection)  - InStr(redirection, "#"))
    redirection = Right(redirection, Len(redirection)  - InStr(redirection, "/"))

Par :

    redirection = Right(redirection, Len(redirection)  - InStr(redirection, "@"))
    
    Dim redirectionSplitee As Variant
    redirectionSplitee = Split(redirection,  ",")

Il ne nous reste ensuite plus qu’à stocker les deux premiers éléments du tableau (avec les index « 0 » et « 1 ») dans la variable « redirection » en remplaçons le signe de séparation des décimales US utilisés par Google dans l’adresse générée par celui reconnu par votre version d’Excel (en principe le point « . » si vous travaillez sur une version française d’Excel) en utilisant la fonction VBA Replace. Nous n’oublierons pas non plus d’intercaler une barre oblique entre la latitude et la longitude :

    redirection = Replace(redirectionSplitee(0)  & "/" & redirectionSplitee(1), ".", ",")

Et voilà, la fonction coordonneesGPS() permet maintenant d’obtenir une chaîne de caractère identique à celle que nous avions mise en place dans la première partie, et que nous pourrons maintenant exploiter avec dans les colonnes « Latitude » et « Longitude » de notre tableau :

Excel formation - convertir adresse postale en coordonnées gps - 04

 



Articles qui pourraient vous intéresser

Comment remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.