XL 2013 Interaction internet explorer

D4_

XLDnaute Nouveau
Bonjour,

Après un certain nombre de tentatives, je ne parviens toujours pas à régler un problème de code concernant le pilotage d'internet explorer via VBA.

Je recherche à saisir automatiquement sur Mappy, un lieu de départ et d'arrivée inscrit préalablement en cellules C2 et D2 de mon classeur.

La dernière ligne du code ci-dessous permet de déterminer que la variable est bien trouvée, et la valeur bien affectée, mais le texte demandé n'est pas saisi sur Mappy.


Merci par avance pour votre aide,

D4_

VB:
Sub explorer()

Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim depart As HTMLInputElement
Dim arrivee As HTMLInputElement

IE.navigate "https://fr.mappy.com/#/1/M2/TItineraryHome/N151.12061,6.11309,2.36122,46.73638/Z5/"
IE.Visible = True

Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set IEDoc = IE.Document
Set depart = IEDoc.all("from")
Set arrivee = IEDoc.all("to")

depart.Value = Range("c2")
arrivee.Value = Range("d2")

MsgBox (IEDoc.all("from").Value)

End Sub
 

Pièces jointes

  • test_explorer1.JPG
    test_explorer1.JPG
    29.8 KB · Affichages: 61

Lone-wolf

XLDnaute Barbatruc
Bonsoir D4

J'ai tester ton code ainsi un code quasiment identite sur YouTube, mais sans succès. Il doit manquer quelque chose dans la macro, mais quoi??? :rolleyes:

Une alternative et qui est fonctionnelle.

VB:
Sub explorer()
Dim IE As Object
Dim trajet As String
Dim depart As String
Dim arrivee As String

depart = [C2]
arrivee = [D2]
Set IE = CreateObject("InternetExplorer.Application")
trajet = "https://maps.google.fr/maps?f=d&saddr=" & depart & "&daddr=" & arrivee
IE.Visible = True
IE.Navigate trajet
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

Cette fois ça y est, j'ai touvé.

VB:
Option Explicit
Sub explorer()
Dim IE As Object
Dim trajet As String
Dim depart As String
Dim arrivee As String

depart = [C2]
arrivee = [D2]
Set IE = CreateObject("InternetExplorer.Application")
trajet = "https://fr.mappy.com/itineraire#/1/M2/TItinerary/IFR" & depart & "|TO" & arrivee
IE.Visible = True
IE.Navigate trajet

Set IE = Nothing
End Sub
 
Dernière édition:

D4_

XLDnaute Nouveau
Bonjour,

Merci pour ta réponse.
Cependant, j'avais déjà cette solution, en générant moi même le lien mappy.
Je souhaitais (entre autre pour acquérir d'autres connaissances) passer par la manipulation du site via son code HTML; car mon second problème réside dans le fait de récupérer les données calculées par mappy pour les utiliser dans excel (distance, durée de trajet, etc...) :

Maintenant, je n'arrive pas à "copier/coller" la distance calculée par Mappy car il s'agit de texte, et je ne peux pas sélectionner l'élément dans le code HTML. (pas de nom, rien pour retrouver cet élément)

Merci encore pour ta réponse,
 

D4_

XLDnaute Nouveau
Re,

Finalement j'ai adapté ta réponse avec une Web Query automatisée (voir code ci-dessous).
L'import des données web s'effectue bien comme demandé en cellule "A5", mais je n'ai qu'une partie de ces données. (voir image ci-joint)

Problème de version Internet Explorer ?
Problème d'affichage de Mappy ?

J'ai essayé avec d'autres sites et le problème semble être le même..

Dans la photo ci-jointe, les données de distance, durée, etc... calculées par mappy devraient être importées également à cet endroit

VB:
Option Explicit
Sub explorer()
Dim depart As String
Dim arrivee As String
Dim siteWeb As String

depart = Sheets("Commandes").Range("C2")
arrivee = Sheets("Commandes").Range("D2")

siteWeb = "https://fr.mappy.com/itineraire#/1/M2/TItinerary/IFR" & depart & "|TO" & arrivee

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;" & siteWeb, _
        Destination:=Range("$A$5"))
        .Name = "results"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = True
        .WebDisableDateRecognition = True
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        .Delete
    End With

End Sub
 

Pièces jointes

  • mappy.JPG
    mappy.JPG
    80.4 KB · Affichages: 92

D4_

XLDnaute Nouveau
Bonjour,

pour la raison suivante (photo ci-jointe)
aucune info récupérées de google maps
pourtant en me connectant directement à ce lien avec Internet Explorer, aucun problème pour l'affichage de la page.

j'ai fait quelques tests avec d'autres sites au hasard, et en comparant, toutes les données texte ne sont pas envoyées vers excel
 

Pièces jointes

  • Google_maps.PNG
    Google_maps.PNG
    23.8 KB · Affichages: 75
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour D4

Essaie cette macro dans un nouveau fichier, mais sans convinction.
VB:
Sub google()
Dim cel
Depart = Feuil1.[C2]
Arrivee = Feuil1.[C3]
Application.ScreenUpdating = False


With Feuil2.QueryTables.Add(Connection:="URL;https://www.google.fr/maps/dir/" _
& Depart & Arrivee, destination:=Feuil2.[A1])
.Name = "itinéraire"
.BackgroundQuery = True
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With


Set Result = Feuil2.Cells.Find("Itinéraire en voiture")
If Result Is Nothing Then
  Feuil1.[B6] = "Itinéraire non trouvé !"
Else
Feuil1.[B6] = "Km  -  Temps"
End If
Feuil1.optKms = True

If Feuil1.[B6] = "Itinéraire non trouvé !" Then: Feuil1.[F7:F12].Clear: Feuil1.[E3].Select



On Error Resume Next
For Each cel In Sheets(2).Range("a53:a60")
If cel.Value Like "Itinéraire*" Or cel.Value Like "Ou*" Or cel.Value Like "- plus d'infos*" Or cel.Value Like "Imp*" Or cel.Value Like "Vér*" _
Or cel.Value Like "Don*" Or cel.Value Like "Aff*" Or cel.Value Like "Sig*" Or cel.Value Like "Go*" Or cel.Value Like "Sai*" _
Or cel.Value Like "Dans*" Or cel.Value Like "Auc*" Or cel.Value Like "Rem*" Or cel.Value Like "Ess*" Or cel.Value Like "Ann*" Then
cel.Delete = True
End If
Next cel

Feuil2.[A53:A60].Copy Feuil1.[F7]

For Each cel In Sheets(1).Range("F7:F12")
If cel.Value Like "Itinéraire*" Or cel.Value Like "Ou*" Or cel.Value Like "- plus d'infos*" Or cel.Value Like "Imp*" Or cel.Value Like "Vér*" _
Or cel.Value Like "Don*" Or cel.Value Like "Aff*" Or cel.Value Like "Sig*" Or cel.Value Like "Go*" Or cel.Value Like "Sai*" _
Or cel.Value Like "Dans*" Or cel.Value Like "Auc*" Or cel.Value Like "Rem*" Or cel.Value Like "Ess*" Or cel.Value Like "Ann*" Then
cel.ClearContents
End If
Next cel
End Sub
 

D4_

XLDnaute Nouveau
Re,

merci de ton intérêt, mais le problème reste le même et semble venir du Javascript avec Internet Explorer, je comprend pas du tout pourquoi ça fonctionne pas du tout avec Google Maps, et pourquoi ça ne fonctionne que partiellement avec tous les autres sites web..
 

D4_

XLDnaute Nouveau
Bonsoir Pierre,

Merci pour ce fichier, très rapide...
Je peine à comprendre le code, qu'est-ce que le "Json" ?
J'ai lu quelques lignes concernant les "GoogleAPI" sans m'y attarder, le fichier que tu nous a partagé sera-il toujours utilisable dans le temps, ou a-il une durée de vie limitée.. ?

Merci encore,
 

eddy1975

XLDnaute Occasionnel
Bonsoir Pierre,
Bravo pour ton fichier et ton blog, je suis allé faire un tour dessus.
Je me permet de te faire une petite demande, j'ai joins ton fichier "refait à ma façon" et j'aimerais, si c'est possible, que si aucune des villes n'est renseignée, le résultat trouvé en distance et durée disparaissent lorsque que tu cliques à nouveau sur le bouton et que les cellules des villes de départ et d'arrivée sont vides. Une sorte de RAZ qui efface toutes les données avec un autre bouton peut-être. Moi et les macros ca fait deux.....
Merci d'avance, si c'est réalisable.
 

Pièces jointes

  • Calcul d'itinéraire.xlsm
    59.5 KB · Affichages: 64

Statistiques des forums

Discussions
314 781
Messages
2 112 903
Membres
111 692
dernier inscrit
scabreu