XL 2019 Géolocalisation via macro ?

guiyom

XLDnaute Junior
Bonsoir,

Je sollicite votre aide car dans le cadre de mon emploi je vais être emmener à me déplacer sur différents sites et ainsi noter mes heures d'entrée/sortie afin de calculer en fin de journée le temps passé sur chaque lieu.

Afin de rendre les choses plus simples j'ai pensé à un tableau Excel avec une macro que je pourrais actionner en entrant et sortant sur chaque lieu depuis mon portable qui aurait pour fonction de noter la date, l'heure ainsi que ma position géographique.

La difficulté réside dans la position géographique …

Après recherche via google map la requête web :
http://maps.google.fr/maps?f=q&hl=fr&q=

Semble activer la géolocalisation, exemple :
.https://www.google.fr/maps/@93.9434755,4.8951886,15z

La macro devrait si possible récupérer les coordonnées dans le cas présent : 93.9434755,4.8951886,15z

Si l'un de vous à une idée ou un projet passé similaire que je pourrais étudier je suis preneur

Cordialement
 

guiyom

XLDnaute Junior
Bonjour,

Un essai ici : depuis une adresse on récupère les coordonnées GPS (en tout cas, ça marche sur mon PC)

Pierre
Bonsoir,

Merci d'avoir pris du temps pour m'aider dans mon problème.

Concernant votre essai après quelques tests il semble ne pas fonctionner si modification de l'adresse.
Je vais tenter de comprendre le problème, votre participation m'a déjà beaucoup aider.

Cordialement
 

guiyom

XLDnaute Junior
Ok,

Alors voici un deuxième essai, basé sur un site en opendata (adresse.data.gouv.fr => donc pour la France) et avec méthode de décodage json
On peut saisir plusieurs adresses à la suite sur les lignes suivantes comme précédemment

Pierre
Merci beaucoup, cela fonctionne parfaitement sur votre deuxième essai.
Je ne connaissais absolument pas le service adresse.data.gouv.fr qui me semble être une bonne alternative.

Je vais adapter la forme à une utilisation mobile.

Cordialement.

PS: Je reviens de votre blog votre travail est impressionnant.
 
Dernière édition:

Youssef_oo7

XLDnaute Nouveau
Bonjour Pierre,

Je viens de voir votre travail et c'est super bien fait! Ca marche pour les adresses en France. Mais quand j'essaye de localiser un hotel ou un commerce en Europe (Allemagne, Espagne) il me donne une autre adresse mais en France.

J'ai vu que vous avez utilisez le site gouv fr , mais pensez vous que si on met un site allemand ou espagnol ça mettera les bonnes adresse à l'étranger? Ou bien est-ce qu'on peut mettre un site international , comme google maps par exemple ..

Je vous remerci d'avance pour votre retour.

Youssef
 

Youssef_oo7

XLDnaute Nouveau
Salut Pierre,

J'ai pas réussi à trouver des sites pareilles en Allemagne et Espagne malheuresement.. Cependant, j'ai réussi à extraire les coordonnées lat long en suivant une vidéo sur Youtube. Il suffit d'installer geocode by awesome table sur le google sheets. L'extension fait déjà tout le travail, et ça marche sur n'importe quel pays. Je laisse le lien de la vidéo au cas ou une personne veut s'en servir un autre jour :))

Le lien : :

Merci encore une fois.

Youssef
 

PVI31

XLDnaute Nouveau
Ok,

Alors voici un deuxième essai, basé sur un site en opendata (adresse.data.gouv.fr => donc pour la France) et avec méthode de décodage json
On peut saisir plusieurs adresses à la suite sur les lignes suivantes comme précédemment

Pierre

Bonjour Pierre,

J'ai repris votre code qui fonctionne très bien.
Juste pour compléter...
Le site du gouvernement fait parfois des erreurs de géocodage (41 rue du Théâtre 75015 PARIS devient Impasse du Théâtre 13150 Tarascon ).
Pour contourner ce problème, il faut transmettre l'adresse en MAJUSCULE et SANS ACCENT.
J'ai créé une petite fonction très basique pour ça. Rien d'extraordinaire, mais ça fonctionne.

VB:
Function [B][I]Super_Majuscule[/I][/B](valeur As String)
Dim sm As String

sm = Replace(valeur, "à", "A")
sm = Replace(sm, "â", "A")
sm = Replace(sm, "ä", "A")
sm = Replace(sm, "Â", "A")
sm = Replace(sm, "Ä", "A")

sm = Replace(sm, "é", "E")
sm = Replace(sm, "è", "E")
sm = Replace(sm, "ê", "E")
sm = Replace(sm, "ë", "E")
sm = Replace(sm, "É", "E")
sm = Replace(sm, "È", "E")
sm = Replace(sm, "Ê", "E")
sm = Replace(sm, "Ë", "E")
sm = Replace(sm, "Ë", "E")

sm = Replace(sm, "î", "I")
sm = Replace(sm, "ï", "I")
sm = Replace(sm, "Î", "I")
sm = Replace(sm, "Ï", "I")

sm = Replace(sm, "ô", "O")
sm = Replace(sm, "ö", "O")
sm = Replace(sm, "Ô", "O")
sm = Replace(sm, "Ö", "O")

sm = Replace(sm, "ù", "U")
sm = Replace(sm, "û", "U")
sm = Replace(sm, "ü", "U")
sm = Replace(sm, "Û", "U")
sm = Replace(sm, "Ü", "U")

Super_Majuscule = UCase(sm)

End Function

et l'on appelle cette fonction dans votre code ici.
Adr = Super_Majuscule(Replace(Adr, " ", "+"))

Encore merci pour votre code.
Pierre

PS : en remerciement, 2 calculs sur Excel pour convertir la latitude et longitude en degré, minute, seconde Nord/Sud ou Est/Ouest

=SI([@Latitude]>0;ENT([@Latitude]);-ENT([@Latitude]))&"°"
&SI(ENT(MOD([@Latitude];1)*60)<10;"0";"")&ENT(MOD([@Latitude];1)*60)&"'"
&SI(ENT(MOD([@Latitude]*60;1)*60)<10;"0";"")&ENT(MOD([@Latitude]*60;1)*60)&""""
&ENT(MOD([@Latitude]*3600;1)*100)
&SI([@Latitude]>0;"N";"S")

=SI([@Longitude]>0;ENT([@Longitude]);-ENT([@Longitude]))&"°"
&SI(ENT(MOD([@Longitude];1)*60)<10;"0";"")&ENT(MOD([@Longitude];1)*60)&"'"
&SI(ENT(MOD([@Longitude]*60;1)*60)<10;"0";"")&ENT(MOD([@Longitude]*60;1)*60)&""""
&ENT(MOD([@Longitude]*3600;1)*100)
&SI([@Longitude]>0;"E";"O")
 

Modeste geedee

XLDnaute Barbatruc
Bonsoir,

Je sollicite votre aide car dans le cadre de mon emploi je vais être emmener à me déplacer sur différents sites et ainsi noter mes heures d'entrée/sortie afin de calculer en fin de journée le temps passé sur chaque lieu.

Afin de rendre les choses plus simples j'ai pensé à un tableau Excel avec une macro que je pourrais actionner en entrant et sortant sur chaque lieu depuis mon portable qui aurait pour fonction de noter la date, l'heure ainsi que ma position géographique.

La difficulté réside dans la position géographique …

Après recherche via google map la requête web :
http://maps.google.fr/maps?f=q&amp;hl=fr&amp;q=

Semble activer la géolocalisation, exemple :
.https://www.google.fr/maps/@93.9434755,4.8951886,15z

La macro devrait si possible récupérer les coordonnées dans le cas présent : 93.9434755,4.8951886,15z

Si l'un de vous à une idée ou un projet passé similaire que je pourrais étudier je suis preneur

Cordialement
93.9434755
Nord ou Sud
o_O va être difficile à atteindre !!!

plutôt :
4.8951886,93.9434755
168 km WSW de Banda Aceh
 
Dernière édition:

max808

XLDnaute Nouveau
Ok,

Alors voici un deuxième essai, basé sur un site en opendata (adresse.data.gouv.fr => donc pour la France) et avec méthode de décodage json
On peut saisir plusieurs adresses à la suite sur les lignes suivantes comme précédemment

Pierre


Bonjour,
Merci pour ces partages mais je ne parviens pas à faire focntionner cette version dans un environnement 64 bits Windows 10 (Msscript.ocx n'est plus reconnu en VBA). Dommage car j'avais le projet de l’utiliser pour une recherche inversée : Code Lat-Lon -> adresse ;-) Auriez vous une solution?
 

max808

XLDnaute Nouveau
Bonne nouvelle ! pour une utilisation avec environnement 64bitrs, on peut utiliser une bibliothèque supplémentaire tsc64.dll
Tablacus Script Control
  • Script Control for 64-bit platforms.
  • Alternate MSScript.ocx

L'aide ici: https://helloacm.com/quick-tutorial-to-64-bit-tablacus-scripting-control/
Le téléchargement : https://github.com/tablacus/TablacusScriptControl/releases/download/1.2.2.0/tsc64_1220.cab
Après installation, utiliser powershell en mode admin pour enregistrer runsvr32 tsc64.dll

Les recherches GPS du tableau fonctionnent (Win10 +Office19 64bits), on peut aussi ajouter la région ;-)
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 890
Membres
103 019
dernier inscrit
Eliot_1