Bonjour.
Voici mon souci.
Parmi d'autres, j'utilise ce bout de code, dans une fonction, pour la création d'un distancier Excel usant des API de Google Maps
Ce code, associé à d'autres FUNCTION et à une SUB, fonctionne à merveille... et même encore il y a quelques jours si on supprimait la clé API personnelle (key=)
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 Function AversB(A As String, B As String) As deAaB Dim Depart As String, Arrivee As String, Site As String Dim Json As Object, Elem As Object, Elem1 As Object Dim ok As Boolean With Sheets("Distancier_via_GoogleMaps") Depart = SupprCaracSpe(A) Arrivee = SupprCaracSpe(B) On Error Resume Next Site = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" & Depart & "&destinations=" & Arrivee & "&mode=driving&language=fr-FR&key=XxXXx_XXXxX_xxXXx_XxXxX" Set Json = oRecordSet(Site) For Each Elem In Json.rows For Each Elem1 In Elem.elements ok = Not (Elem1.status = "ZERO_RESULTS") AversB.dist = Elem1.distance.Value / 1000 AversB.duree = Elem1.duration.Value / 24 / 60 / 60 Next Elem1 Next Elem ScriptControl.AddCode "Object.prototype.item=function( i ) { return this[i] } ; " AversB.ptA = Json.origin_addresses.item(0) AversB.ptB = Json.destination_addresses.item(0) If Not ok Then AversB.dist = 0 AversB.duree = 0 End If Set Json = Nothing End With End Function
Mais depuis quelques jours, les API Google Maps sont (presque) plus gratuites, et mon outil doit être utilisé par plusieurs personnes, dans des lieux différents.
Je n'ai pas envie de partager ma clé API perso avec tous et payer pour les autres lol... et l'utilisation en mode "anonyme" ne fonctionne plus donc.
Dans mon fichier Excel, j'ai donc ajouter une cellule dans une autre feuille, où il est demandé à l'utilisateur de saisir sa clé API.
Sauf que je n'arrive pas à l'intégrer dans mon code Function que je vous ai présenté... J'avais pensé à l'ajout d'une variable :
Mais cela ne fonctionne pas... Je débute dans les macros, mais je crois bien que je ne peux pas déclarer la valeur d'une cellule dans une variable, et l'utiliser comme dans un Sub, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 (...) Dim API_Perso As String API_Perso = Range("A1").Value 'ou Cells(1, 1).Value (...) Site = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" & Depart & "&destinations=" & Arrivee & "&mode=driving&language=fr-FR&key=" & API_Perso (...)
J'avais pensé à une macro qui copie-coller le contenu "texte" d'une cellule directement au sein de la macro suivante (genre j'insère ma ligne 'site = "https://......' avec la clé en cellule A1 et une première macro me copie le texte en ligne 12 de la macro suivante, qui contient le code 'FUNCION', dans le Module 1 VBA... Mais je ne sais pas si c'est possible.
Y a t-il une solution concrète ? Laquelle ? Comment ?
Merci mille fois !
Partager