Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Récupérer info météo

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous et toutes,

En complément de mon "Calendrier, éphéméride, lunaison et marée V2.2", je pensais rajouter un module météo dans le style



ou au mieux ça




J'ai trouvé beaucoup de chose mais j'y arrive pas du tout
J'ai essayé sur ChatGPT mais ça me renvois systématiquement sur "api.openweathermap" qui demande une inscription obligatoirement pour avoir une clé d'enregistrement, mais pour moi ce n'est pas le but.

Je suis loin d'êtres un champion, très loin même, mais je n'arrive pas à trouver une solution satisfaisante à ce que je souhaite.
Je joint un fichier qui ne sert pas trop à grand chose, mais c'est loin d'être le résultat voulu, juste pour dire que j'ai quand même cherché

Si vous avez de meilleurs solutions, merci à vous tous.

Nicolas.
 

Pièces jointes

  • Météo.xlsm
    77.8 KB · Affichages: 22

dysorthographie

XLDnaute Accro
Bonjour,
pour ceux que ça pourrais intéresser, voici un l'onglet des ville avec le Code postaux.

j'avais déjà ajouté une macro pou le CP Insee. pour les données météo je suis pas a votre niveau mais je récupère casi tout je suis encore qu'a l'ébauche et je n'aurais peut-être pas fini quand ce poste sera flagué à résolu mais si ce que j'ai déjà fait peut être utile à quelqu'un ...
 

Pièces jointes

  • Projet Météo en cour.xlsm
    151.1 KB · Affichages: 5

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD

Bonjour Staple1600,

PQ c'est pas du tout dans mais compétence, mais je suis à l'écoute de toutes améliorations

Merci
 

Pièces jointes

  • Calendrier Ephéméride Marée V2.6 Dark.xlsm
    427.4 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Re

@jurassic pork
L'erreur survenait quand j'utilisais le parser de Daniel FERRY
Mais comme plus tard, tu as dit qu'il fallait reprendre l'ancien parser (celui de Tim HALL)
Je suis parti sur la piste PQ, et je m'y embourbe un chouia
(J'essaie de créé une fonction pour passer le nom d'une ville en paramètre)
J'en suis là
PowerQuery:
let
Ville=Choix_Ville,
Source = Json.Document(Web.Contents("https://geo.api.gouv.fr/communes?nom=" & Ville)),
vTable = Table.FromRecords(Source),
Fin = Table.ExpandListColumn(vTable, "codesPostaux")
in
Fin
Et par exemple pour Nantes, j'obtiens

versus ceci en VBA (avec ton code)
 

jurassic pork

XLDnaute Occasionnel
C'est ce que je disais : il y a plusieurs lignes quand il y a plusieurs codes postaux pour la même commune, il faut prendre que la première. Un spécialiste PowerQuery va te régler cela en moins de 2 et il va aussi te récupérer la ville dans une cellule nommée du classeur.
 

Staple1600

XLDnaute Barbatruc
Re

@jurassic pork
et il va aussi te récupérer la ville dans une cellule nommée du classeur.
Ca je sais faire
Mais comme tu disais que l'inconvénient de PQ c'est de passer par le chargement des données dans une feuille
J'essaie de voir si on peut ne pas passer par une feuille
(mais récupérer le résultat de la requête dans un string que l'on pourra ensuite manier en VBA)
Pour le moment, je patauge
(et je vais sans doute patauger longtemps si PQ ne renvoie ses résultats que sur des feuilles
 

jurassic pork

XLDnaute Occasionnel
Re

@jurassic pork
Mais comme tu disais que l'inconvénient de PQ c'est de passer par le chargement des données dans une feuille
J'essaie de voir si on peut ne pas passer par une feuille
J'ai aussi regardé ce problème et j'ai trouvé une possibilité. Il faut passer par un Data Model. Il faut charger la requête Powerquery dans le Data Model. J'y suis arrivé mais je maîtrise pas trop pour l'instant alors je ne met pas de code.
Par contre une fois que cela est fait j'arrive à lire les données qui sont dedans. Voici par exemple pour ta requête PowerQuery chargée dans le DataModel (CodeINSEE est la connexion au Data Model) :
VB:
Sub GetPowerQueryResult()
    Dim oConn As WorkbookConnection, oRS As Object ' Recordset
    Dim oCnn As Object, sTabName As String
    Set oConn = ThisWorkbook.Connections("CodeINSEE")
    sTabName = oConn.ModelTables(1).Name
    Set oCnn = ThisWorkbook.Model.DataModelConnection.modelConnection.ADOConnection
    Set oRS = CreateObject("ADODB.RecordSet")
    oRS.Open "EVALUATE '" & sTabName & "'", oCnn
    Do While Not oRS.EOF
        Debug.Print oRS.Fields(0) & " -> Code INSEE: " & oRS.Fields(1) & _
                               " - Dep: " & oRS.Fields(2) & _
                               " - Cp: " & oRS.Fields(6) & _
                               " - Pop: " & oRS.Fields(7)
        oRS.MoveNext
    Loop
End Sub
voici ce que j'obtiens comme résultat :
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…