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, un monde sans état.

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.

Exemple pour les pressés

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 obtenons:
VbaWeb-Macro02

Utilisation

Il suffit de télécharger les modules depuis le repo github.
Dézipper le contenu et vous pouvez utiliser directement la version VBA-Web - Blank.xlsm. Il s'agit d'un fichier vide (comme son nom l'indique) qui a les modules nécessaires déjà chargés.

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

La documentation est très fournie.

Son utilisation est classique:

  • vous commencez par définir votre point d'entrée à l'API, c'est à dire l'URL que vous pouvez construire dynamiquement avec une base qui varie peu et un chemin qui peut evoluer avec différentes versions d'APIs et enfin des paramètres.
  • vous pouvez définir d'autres paramètres à votre requete (comme les éléments du header)
  • vous executez votre requete qui vous retourne (normalement) une instance de Response qui vous reste ensuite à processer.

L'outil vous met à disposition un grand nombre d'aides qui facilitent les types de requetes les plus courantes comme un Get ou PostJSON, les objets Headers...