/ trucs et astuces

API Rest Json depuis Excel

Depuis plusieurs mois/années les développements d'applications sont découpées et offres de plus en plus d'APIs.
Le standard de facto est aujourd'hui l'API en Rest / Json.

Macro Excel VBA-Web

Il existe une macro VBA disponible sur github qui permet facilement d'appeler une API Rest / Json.
Je l'ai utilisée par exemple pour extraire automatiquement l'ensemble des issues d'un repo GitLab mais nous allons l'utiliser ici avec un autre service.

Utilisation

Il suffit de la télécharger depuis le repo github.
Dézipper le contenu et vous pouvez utiliser directement la version VBA-Web - Blank.xlsm.

Ouvrez le fichier Excel et allez dans l'éditeur Visual Basic et vous devez voir l'ensemble des classes disponibles.

La documentation est très fournie.

Exemple

Pour note exemple, nous allons interroger des données de Pays disponible sur restcountries.eu.
Voici ci-dessous le code de démo. L'URL sera bien évidemment construite avec les bons paramètres.

Public Sub InterrogationPays()
    Dim Url As String
    Dim dataFromResponse As Collection
    
    Dim Client As New WebClient
    Dim Request As New WebRequest
    Dim Response As New WebResponse
    
    EnableLogging = True
    
    Client.BaseUrl = "https://restcountries.eu/rest/v2/name/fra"
    
    Set Response = Client.Execute(Request)
    
    If (Response.StatusCode = Ok) Then
        Set dataFromResponse = Response.Data
        ProcessResponse dataFromResponse
    End If
End Sub

Private Sub ProcessResponse(dataResponse As Collection)
    Dim ws As Worksheet
    Dim dataItem As Object
    Dim i As Integer
    Set ws = ActiveWorkbook.Worksheets(1)
    
    ws.Range("A1").Value = Now
    i = 0
    For Each dataItem In dataResponse
        ws.Range("B2").Offset(i).Value = dataItem.Item("name")
        ws.Range("C2").Offset(i).Value = dataItem.Item("capital")
        ws.Range("D2").Offset(i).Value = dataItem.Item("population")
        i = i + 1
    Next
End Sub

et nous optenons: