Automatisation VBA Excel

Bonjour à tous,
j’ai une base de données de prospects sur Excel (raison sociale, adresse complète, numéro de téléphone fixe à 10 chiffres). J’ai besoin d’automatiser leur éligibilité à la fibre de façon simple et rapide… Après plusieurs essais sur différents forums, Chat Gpt et autres, je suis dans l’impasse… Quelqu’un serait-il expert en codage (VBA pour module Excel) et pourrait m’aider, svp ?, c’est capital pour ma poursuite de missions au sein de mon entreprise…
Merci d’avance

Hello @AnthonyJoutel,

J’aurais eu tendance à le faire dans Google Sheets avec Apps Script.

Tu as essayé de faire ça avec Chatgpt ? N’hésite pas à lui retourner les erreurs que tu rencontres.

Il faut que tu trouve un service qui permet de tester l’éligibilité en API : FAI habituels(?) ou peut-être des services de speed test.


VBA code for fiber eligibility - Model: GPT-4
Voici sa réponse avec ta demande (au risque d’en faire râler certains :joy:) :

Bonjour,

Je peux vous aider à créer un code VBA simple pour vérifier l’éligibilité à la fibre de vos prospects. Vous pouvez utiliser une API pour obtenir cette information. Par exemple, vous pouvez utiliser l’API d’un fournisseur de services Internet (FSI) pour vérifier l’éligibilité à la fibre.

Voici un exemple de code VBA pour interroger une API fictive et vérifier l’éligibilité à la fibre en fonction de l’adresse de chaque prospect. Remplacez l’URL « http://api.example.com/checkFiberEligibility » par l’URL de l’API réelle que vous utiliserez.

Option Explicit

Sub VerifierEligibiliteFibre()

    Dim ws As Worksheet
    Dim LastRow As Long
    Dim i As Long
    Dim xmlhttp As Object
    Dim jsonResponse As Object
    Dim apiURL As String

    Set ws = ThisWorkbook.Worksheets("Feuil1") ' Remplacez "Feuil1" par le nom de la feuille contenant vos données
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To LastRow ' Commence à 2 pour ignorer l'en-tête de la colonne

        apiURL = "http://api.example.com/checkFiberEligibility?address=" & ws.Cells(i, 2).Value

        Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
        xmlhttp.Open "GET", apiURL, False
        xmlhttp.setRequestHeader "Content-Type", "application/json"
        xmlhttp.send

        Set jsonResponse = ParseJson(xmlhttp.responseText)

        If jsonResponse("eligibility") = "true" Then
            ws.Cells(i, 5).Value = "Éligible"
        Else
            ws.Cells(i, 5).Value = "Non éligible"
        End If

    Next i

End Sub

Vous devrez également ajouter une référence à la bibliothèque « Microsoft Scripting Runtime » pour utiliser la fonction ParseJson. Pour ce faire, dans l’éditeur VBA :

  1. Allez dans le menu « Outils » > « Références ».
  2. Cherchez « Microsoft Scripting Runtime » dans la liste.
  3. Cochez la case à côté de « Microsoft Scripting Runtime » et cliquez sur « OK ».

Assurez-vous de remplacer l’URL de l’API et les références de cellules appropriées en fonction de la structure de votre feuille de calcul. Ce code suppose que l’adresse est dans la colonne B et que le résultat de l’éligibilité sera inscrit dans la colonne E.

Veuillez noter que ce code est un exemple et qu’il devra être adapté à vos besoins spécifiques, en fonction de l’API que vous utilisez et des données dont vous disposez.

Ok merci pour votre retour si rapide…alors dans mon VBA, en ayant adapté votre code; il m’en ressort l’erreur suivante : Erreur de compilation/Sub ou fonction non définie avec ParseJson surlignée

Après ça je te laisse voir avec ChatGPT directement :wink:


Sa réponse :

Je m’excuse pour la confusion. J’ai omis de mentionner que vous devez ajouter une référence à la bibliothèque « Microsoft Scripting Runtime » pour utiliser la fonction ParseJson. Suivez ces étapes pour ajouter la référence nécessaire et résoudre l’erreur de compilation :

  1. Ouvrez l’éditeur VBA (Visual Basic for Applications) en appuyant sur Alt + F11 dans Excel.
  2. Dans l’éditeur VBA, accédez au menu « Outils » > « Références ».
  3. Dans la boîte de dialogue « Références », faites défiler la liste jusqu’à ce que vous trouviez « Microsoft Scripting Runtime ».
  4. Cochez la case à côté de « Microsoft Scripting Runtime » et cliquez sur « OK ».

Après avoir ajouté la référence à la bibliothèque, vous devriez être en mesure d’utiliser la fonction ParseJson sans erreur de compilation.

Si vous ne souhaitez pas utiliser la bibliothèque « Microsoft Scripting Runtime », vous pouvez également remplacer la fonction ParseJson par la fonction suivante :

Function JsonDecode(jsonString As String) As Object
    Dim scriptControl As Object
    Set scriptControl = CreateObject("ScriptControl")
    scriptControl.Language = "JScript"
    scriptControl.AddCode "function jsonDecode(jsonString) { return eval('(' + jsonString + ')'); }"
    Set JsonDecode = scriptControl.Run("jsonDecode", jsonString)
End Function

Et dans la partie principale du code, remplacez :
Set jsonResponse = ParseJson(xmlhttp.responseText)

par

Set jsonResponse = JsonDecode(xmlhttp.responseText)

Cette alternative utilise un contrôle de script JScript pour analyser la chaîne JSON et ne nécessite pas de référence supplémentaire.

Bonjour, il y a plus simple avec une formule si(; tu peux imbriquer jusqu’à 10 si , soit vérifier que la localisation respecte 10 critère)

Voici l’api du gouvernement pour la couverture de fibre