Fonction VBA pour récupérer l'URL d'une page web marche pas

Fermé
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022 - Modifié le 13 mai 2022 à 09:45
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 - 16 mai 2022 à 14:21
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 :
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 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
13 mai 2022 à 14:24
bonjour,
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
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
Modifié le 13 mai 2022 à 16:08
Bonjour,

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 !
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
13 mai 2022 à 16:47
sur quelle ligne de code obtiens-tu cette erreur?
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022 > yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024
13 mai 2022 à 17:04
à la ligne
navigateur.Visible = True
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022 > hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
13 mai 2022 à 17:05
et quand j'enlève cette ligne (car finalement elle n'est pas obligatoire, elle m'affiche juste la page web), l'erreur passe à la ligne d'après à la nouvelle exécution
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
13 mai 2022 à 17:10
En fait, ShellExecute() retourne un nombre, pas un objet.
D'où t'est venue l'idée que tu obtiendrais un objet?
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
13 mai 2022 à 17:29
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

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
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
13 mai 2022 à 17:43
peux-tu spécifier le langage (basic) quand tu utilises les balises de code?
quand tu as une erreur, peux-tu donner le texte du message d'erreur?
je me demande si tu ne persistes pas à oublier
set
.
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
16 mai 2022 à 11:55
là l'erreur vient de
redirection = navigateur.locationUrl


le message d'erreur est :
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
16 mai 2022 à 12:06
Tu as vraiment testé en laissant
"url"
? Pour que cela fonctionne, il faut mettre l'adresse d'un site.
0
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
16 mai 2022 à 12:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hamza-arif Messages postés 11 Date d'inscription vendredi 13 mai 2022 Statut Membre Dernière intervention 13 juin 2022
16 mai 2022 à 12:46
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
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
16 mai 2022 à 14:21
Je ne pense pas que par VBA, tu pourras obtenir l'url final affiché dans la zone d'adresse du navigateur.
Je suggère de chercher quelque chose que tu peux obtenir dans la page de réponse (visible dans la source de la page).
0