Fonction VBA pour récupérer l'URL d'une page web marche pas
hamza-arif
Messages postés
11
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai besoin de votre aide pour un souci :
mon objectif : je veux récupérer les coordonnées gps à l'aide d'une fonction vba avec en entrée une adresse quelconque, pour ça j'essaie accéder à l'URL de la page open street map, ouverte à partir d'une adresse donnée en paramètre, dans le but d'extraire les coordonnées gps de cette adresse qui sont contenues dans l'URL de la page
mon problème : j'ai trouvé un programme sur internet qui permet à peu près de faire ça, je l'ai un peu modifié , mais ça ne marche mais quand j'appelle ma fonction en étant dans une feuille excel.
le code :
le retour :
ce code m'ouvre bien la page microsoft edge mais ne récupère pas l'adresse de la page, ce qui m'intéresse, j'ai le msg ""#VALEUR!" dans la cellule où j'ai entré la fonction AdresseToCoordonnesGPS

MERCI de votre aide
J'ai besoin de votre aide pour un souci :
mon objectif : je veux récupérer les coordonnées gps à l'aide d'une fonction vba avec en entrée une adresse quelconque, pour ça j'essaie accéder à l'URL de la page open street map, ouverte à partir d'une adresse donnée en paramètre, dans le but d'extraire les coordonnées gps de cette adresse qui sont contenues dans l'URL de la page
mon problème : j'ai trouvé un programme sur internet qui permet à peu près de faire ça, je l'ai un peu modifié , mais ça ne marche mais quand j'appelle ma fonction en étant dans une feuille excel.
le code :
Option Explicit
Function AdresseToCoordonnesGPS(URL As String)
'URL contient la recherche qu'on veut faire par, par exemple : URL="https://www.openstreetmap.org/search?query="&A2
'où la cellule A2 contient l'adresse du lieu,
'voici la partie qui lance l'adresse dans le navigateur
Dim navigateur As Object
Set navigateur = CreateObject("Shell.Application").ShellExecute("microsoft-edge:" & URL) 'CreateObject("MicrosoftEdge.Application")
navigateur.Visible = True
Do While navigateur.busy And navigateur.ReadyState <> 4
DoEvents
Loop
pause (3)
Dim redirection As String 'cette variable contiendra la partie intéressante du lien passé en argument càd les coordonnées gps N,E
redirection = navigateur.locationUrl
redirection = Right(redirection, Len(redirection) - InStr(redirection, "#")) 'les coordonnées gps se trouvent à droite du sigle # dans l'url
redirection = Right(redirection, Len(redirection) - InStr(redirection, "/"))
AdresseToCoordonnesGPS = redirection
End Function
le retour :
ce code m'ouvre bien la page microsoft edge mais ne récupère pas l'adresse de la page, ce qui m'intéresse, j'ai le msg ""#VALEUR!" dans la cellule où j'ai entré la fonction AdresseToCoordonnesGPS
MERCI de votre aide
Configuration: Windows / Edge 101.0.1210.39
5 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
pour comprendre, tu dois tester ta fonction hors d'une feuille excel:
pour comprendre, tu dois tester ta fonction hors d'une feuille excel:
Private Sub tt()
Dim result As String
result = AdresseToCoordonnesGPS("url")
Debug.Print result
End Sub
j'avais trouvé ça sur un forum, mais effectivement si tu dis que ShellExecute() renvoie un nombre alors je ne suis pas cohérent (au passage j'ai pas trouvé bcp de docu sur cette commande en cherchant sur internet)
en fait, j'avais pensé à ShellExecute() pour ouvrir un autre navigateur que Internet-Explorer (navigateur par défaut utilisé dans vba)
pour utiliser internet explorer, je peux remplacer la ligne contenant le ShellExecute() par
le code final devient :
et quand je fais appel avec
l'erreur se trouve sur la ligne :
ps : ce code je l'ai trouvé ici : https://www.youtube.com/watch?v=DcIrj0U_8HM
en fait, j'avais pensé à ShellExecute() pour ouvrir un autre navigateur que Internet-Explorer (navigateur par défaut utilisé dans vba)
pour utiliser internet explorer, je peux remplacer la ligne contenant le ShellExecute() par
ShellExecute
le code final devient :
Function AdresseToCoordonnesGPS(URL As String)
Dim navigateur As Object
'Set navigateur = CreateObject("InternetExplorer.Application")
'navigateur = CreateObject("Shell.Application").ShellExecute("microsoft-edge:" & URL) '
navigateur = CreateObject("InternetExplorer.Application")
navigateur.navigate URL
navigateur.Visible = True
Do While navigateur.busy And navigateur.readyState <> 4
DoEvents
Loop
pause (3)
Dim redirection As String
redirection = navigateur.locationUrl
redirection = Right(redirection, Len(redirection) - InStr(redirection, "#"))
redirection = Right(redirection, Len(redirection) - InStr(redirection, "/"))
AdresseToCoordonnesGPS3 = redirection
'penser à fermer la fenêtre avec quand ça marche :
'navigateur.Quit
'Set navigateur = Nothing
End Function
Private Sub tt()
Dim result As String
result = AdresseToCoordonnesGPS("url")
Debug.Print result
End Sub
et quand je fais appel avec
Private Sub tt()
Dim result As String
result = AdresseToCoordonnesGPS("url")
Debug.Print result
End Sub
l'erreur se trouve sur la ligne :
navigateur = CreateObject("InternetExplorer.Application")
ps : ce code je l'ai trouvé ici : https://www.youtube.com/watch?v=DcIrj0U_8HM
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
Tu as vraiment testé en laissant
"url"? Pour que cela fonctionne, il faut mettre l'adresse d'un site.
oui punaise je suis débile, j'ai pas changé...
alors oui après changement, en appelant ma fonction AdresseToCoordonnesGPS3 dans le sub tt, j'ai bien l'ouverture de la page (j'ai testé url="google.com"), mais ça ne me renvoie pas le lien de la page que j'ai cherché, par "lien" j'entends que ça me renvoie l'adresse de la page recherché, pour l'exemple de Google, ça devrait renvoyer "https://www.google.com/" même si je sais bien qu'un sub n'envoie pas de retour.
ps : pour info, vu qu'IE commence à être obsolète, lorsque la page IE s'ouvre (tjrs avec url="google.com"), IE me renvoie que "Ce site web ne fonctionne pas avec Internet Explorer" et ouvre la page recherchée dans Edge directement, c'est pour éviter ce problème aussi que je voulais directement faire mes recherches dans Edge
alors oui après changement, en appelant ma fonction AdresseToCoordonnesGPS3 dans le sub tt, j'ai bien l'ouverture de la page (j'ai testé url="google.com"), mais ça ne me renvoie pas le lien de la page que j'ai cherché, par "lien" j'entends que ça me renvoie l'adresse de la page recherché, pour l'exemple de Google, ça devrait renvoyer "https://www.google.com/" même si je sais bien qu'un sub n'envoie pas de retour.
ps : pour info, vu qu'IE commence à être obsolète, lorsque la page IE s'ouvre (tjrs avec url="google.com"), IE me renvoie que "Ce site web ne fonctionne pas avec Internet Explorer" et ouvre la page recherchée dans Edge directement, c'est pour éviter ce problème aussi que je voulais directement faire mes recherches dans Edge
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
d'autre part, quand je teste ma fonction AdresseToCoordonnesGPS3 directement dans la feuille excel, je n'ai plus l'erreur "#VALEUR!", mais je n'ai toujours pas ce que je cherche.
par exemple, dans la colonne B2, j'ai posé = =AdresseToCoordonnesGPS3("https://www.openstreetmap.org/search?query="&A2)
où A2 = 5 rue victor Hugo 95140 garges-lès-gonesse
ce qui fait que URL = "https://www.openstreetmap.org/search?query=5 rue victor Hugo 95140 garges-lès-gonesse"
et ce la me renvoie juste "https://www.openstreetmap.org/search?query=5 rue victor Hugo 95140 garges-lès-gonesse"
au lieu de me renvoyer "https://www.openstreetmap.org/search?query=5%20rue%20victor%20Hugo%2095140%20garges-l%C3%A8s-gonesse#map=18/48.97210/2.38848"
lien dans lequel sont contenues les coordonnées gps, ce qui m'intéresse
j'espère que c'est à peu près clair comme demande
par exemple, dans la colonne B2, j'ai posé = =AdresseToCoordonnesGPS3("https://www.openstreetmap.org/search?query="&A2)
où A2 = 5 rue victor Hugo 95140 garges-lès-gonesse
ce qui fait que URL = "https://www.openstreetmap.org/search?query=5 rue victor Hugo 95140 garges-lès-gonesse"
et ce la me renvoie juste "https://www.openstreetmap.org/search?query=5 rue victor Hugo 95140 garges-lès-gonesse"
au lieu de me renvoyer "https://www.openstreetmap.org/search?query=5%20rue%20victor%20Hugo%2095140%20garges-l%C3%A8s-gonesse#map=18/48.97210/2.38848"
lien dans lequel sont contenues les coordonnées gps, ce qui m'intéresse
j'espère que c'est à peu près clair comme demande
J'ai testé ton macro, voici ce qu'il me renvoie :
en même temps il m'ouvre ma page d'accueil Edge...
j'ai cherché la référence de l'erreur sur des forums, y a plein de réponses différentes, j'ai essayé des choses mais sans succès.
Je sais pas si tu as trouvé la faille dans ma fonction et tu voulais que je la trouve par moi même ou c'était juste une piste.
Je continue mes recherches, même si ma tête commence à saturer, 3 jour consécutifs que je bosse dessus sans succès !
D'où t'est venue l'idée que tu obtiendrais un objet?