Bonjour,
Je reviens une seconde fois pour un problème dans la même lignée que la première.
Je cherche à télécharger des fichiers issus de requêtes.
Je m'explique. J'ai un fichier Excel qui contient des coordonnées GPS (X et Y) d'un point d'origine et des coordonnées GPS (x et y) d'un point d'arrivée.
Je reconstitue une adresse URL afin d'en faire un lien URL directement utilisable sur google maps.
Mes liens fonctionnent et me donnent bien mon itinéraire entre chaque point d'origine et de destination.
J'envoie ce lien sur un site qui le transforme en trace (itinéraire) avec l'extension .gpx
l'objectif étant par la suite de visualiser ces itinéraires dans un logiciel SIG.
Donc tout va bien jusqu'à la fin où une boite de dialogue me demande soit d'ouvrir, d'enregistrer ou d'annuler.
Je n'ai pas réussi à trouver la solution malgré les kilos de solutions lues ici et ailleurs.
Je vous mets le code que j'ai bâti (doucement voire lentement mais sûrement)
Mon objectif est de faire "enregistrer sous" et de nommer le fichier avec la donnée contenue dans la colonne A de la même ligne de mon tableur, le tout avec l'extension de base .gpx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 Sub PremierIE() 'Déclaration des variables Dim IE As New InternetExplorer Dim IEDoc As HTMLDocument Dim InputGpsVisualizerOrigineZoneTexte As HTMLInputElement Dim htmlSelectElem As HTMLSelectElement Dim InputGpsVisualizerBouton As HTMLInputElement Dim InputConvertFormatBouton As HTMLInputElement Dim Link As HTMLInputElement Dim TheCell As Range Dim Doc As HTMLDocument With Feuil1 'On boucle sur les cellules de la colonne T For Each TheCell In .Range("T1", .Cells(.Rows.Count, "T").End(xlUp)) 'Chargement d'une page web GPSVisualizer IE.navigate "http://www.gpsvisualizer.com/convert_input" 'Affichage de la fenêtre IE IE.Visible = True 'On attend le chargement complet de la page WaitIE IE 'On pointe le membre Document Set IEDoc = IE.document 'On pointe le format de sortie Set InputConvertFormatBouton = IEDoc.all("convert_format:gpx") InputConvertFormatBouton.setAttribute "checked", True 'On définit le texte que l'on souhaite placer à l'intérieur de la zone de départ Set InputGpsVisualizerOrigineZoneTexte = IEDoc.all("remote_data") 'InputGpsVisualizerOrigineZoneTexte.Value = "https://www.google.fr/maps/dir/43.6650834,5.43989410000006/43.4593692,5.3712595/@43.5326261,5.3588303,10.5z" InputGpsVisualizerOrigineZoneTexte.Value = TheCell.Value 'On pointe notre bouton Set InputGpsVisualizerBouton = IEDoc.all("submitted") 'On simule un clic InputGpsVisualizerBouton.click 'On attend la fin de la recherche WaitIE IE Set Doc = IE.document 'Doc.Links(0) = 1er lien contenu dans la page html Set Cible = Doc.Links(19) Cible.click 'après je souhaite faire "enregistrer sous", nommer le fichier avec la donnée contenue dans la colonne A de la même ligne, le tout avec l'extension de base .gpx 'Après, je ferme la fenêtre et je recommece avec les infos de la ligne suivante. 'A noter que la solution : parentWindow.execScript "download(1)", "javascript" ne fonctionne pas ou je ne sais pas la faire fonctionné 'j'ai également essayé les "hwnd"... 'On libère la variable IE Set IE = Nothing Set IEDoc = Nothing Next End With End Sub Sub WaitIE(IE As InternetExplorer) 'On boucle tant que la page n'est pas totalement chargée Do Until IE.readyState = READYSTATE_COMPLETE DoEvents Loop End Sub
Après, je fermerai la fenêtre et je recommencerai avec les infos de la ligne suivante.
Je sais qu'il y a sûrement moyen de faire tout en mode cacher, mais ça me "rassure" de voir que mon code agit sur ma page web.... et oui !
Espérant avoir été assez intelligible.
Merci d'avance.![]()
Partager