Maintenant pour piloter les navigateurs Web en VBA, il y a aussi Chromium Automation for VBA constitué de modules de classe VBA et qui permet de piloter les principaux navigateurs :
Il s'agit d'une méthode permettant d'automatiser directement les navigateurs Web basés sur Chromium, tels que Chrome, Edge et Firefox, à l'aide des applications VBA pour Office en suivant le cadre du protocole Chrome DevTools.
Cette méthode permet une automatisation directe avec les navigateurs Web basés sur Chromium pour VBA sans avoir besoin d'un logiciel tiers comme SeleniumBasic qui nécessite un driver pour le navigateur choisi. Le framework comprend également de nombreux exemples et fonctions utiles ajoutés au référentiel d'origine tout en gardant la conception globale aussi simple que possible pour vous aider à comprendre et à démarrer rapidement le déploiement du framework CDP pour vos solutions VBA.

Pour l'installation,
téléchargez Chromium-Automation-with-CDP-for-VBA :
1 - Cliquez dans Releases sur la dernière version (Latest) (exemple CDP Framework 2.7.4)
2 - Dans la fenêtre qui s'ouvre choisir pour le téléchargement dans Assets le fichier zip et extraire le fichier xlam qui se trouve dedans.
3 - Ouvrez ce fichier avec Excel.
4 - Dans l'éditeur VBA, copiez les classes CDPBrowser, CDPCore, CDPElement, CDPJConv dans votre projet VBA.
5 - Assurez vous que votre projet dispose d’une référence Microsoft Scripting Runtime ( Outils/Références cocher la référence).

Voici un exemple avec des commentaires en français pour piloter google maps à partir de MS Edge afin de trouver un itinéraire entre deux adresses et afficher les résultats dans la fenêtre d'exécution VBA :
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
38
39
40
41
42
Public Function TrajetGoogleMaps(AdresseDépart As String, AdresseArrivée As String, _                                
                                 Optional CacherGoogleMaps As Boolean = False) As Long
'-------------------------------------------------------------------------------
' Ouvre Google Maps sur le calcul du trajet des adresses passées en arguments.
'-------------------------------------------------------------------------------
Dim objBrowser As New CDPBrowser
Dim listeTrajets As Collection
Dim trajet As CDPElement
Dim result
    On Error Resume Next
    'on lance MS EDGE
    objBrowser.start "edge", cleanActive:=True, reAttach:=True
    ' on peut cacher le navigateur
    If CacherGoogleMaps Then objBrowser.hide
    objBrowser.navigate ("https://www.google.fr/maps/dir/")
    objBrowser.wait till:="interactive"
    'envoi de l'adresse de départ dans sa zone de saisie dans la page
    objBrowser.getElementByXPath("//input[@aria-controls='sbsg50']").value = AdresseDépart
    'envoi de l'adresse de destination dans sa zone de saisie dans la page
    objBrowser.getElementByXPath("//input[@aria-controls='sbsg51']").value = AdresseArrivée
    'Clic sur le bouton qui correspond à  un trajet en voiture
    objBrowser.getElementByXPath("//button/img[@data-tooltip='Voiture']").click
    ' Attente des résultats affichage des différentes propositions
    objBrowser.getElementByXPath("//div[@data-trip-index]").onExist
    Set listeTrajets = objBrowser.getElementsByXPath("//div[@data-trip-index]")
    Debug.Print "========== Résultats =============="
    For Each trajet In listeTrajets
       Debug.Print trajet.innerText
       Debug.Print "========================"
    Next
    'Clic sur la section du premier résultat en attendant son apparition
    objBrowser.getElementByID("section-directions-trip-0").onExist.click
    'Récupération du texte qui donne le temps et le kilométrage du trajet en attendant son apparition
    result = objBrowser.getElementByXPath("//div[@class='TGDfee']").onExist.innerText
    Debug.Print "Premier trajet : " + result
    objBrowser.quit
    Set trajet = Nothing: Set listeTrajets = Nothing: Set objBrowser = Nothing
End Function
 
Sub TestTrajet()
TrajetGoogleMaps "22 rue Cassette, 75006, Paris", "Bordeaux", False
End Sub
Par défaut quand on utilise l'objet CDPBrowser des messages de debug sont affichés dans la fenêtre d'exécution du VBA et sont générés dans un fichier log qui se trouve dans un répertoire Logs à l'endroit où se trouve le classeur source :
Exemple :
----------------------------------------------------------------------------------------------------
New Browser Session Started
----------------------------------------------------------------------------------------------------
07:15:07 | BRID575 | cleanUpSessions completed and previous CdpSessionID removed
07:15:07 | BRID575 | setCrashStateNormal completed
07:15:07 | BRID575 | CDPCore initialized successfully
07:15:07 | BRID575 | Now looking for the browser window
07:15:07 | BRID575 | Now attaching CDP pipes to the browser session
07:15:07 | BRID575 | Successfully attached to Session ID C8A5B5F7E850B993432E1CB4E59A03F7
Si on ne veut pas avoir ce comportement, c'est à dire ne pas avoir les messages de debug, faire ceci dans le module de classe CDPBrowser:
Au début du code de la classe CDPBrowser ajouter une constante. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Private Const DebugMode = False
et dans ce module au début de la fonction printMsg ajouter ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  Public Function printMsg(strMsg As String, Optional isHeader As Boolean = False, Optional doRaiseError As Boolean = False)
 
    If Not DebugMode Then Exit Function
On pourrait aussi modifier cette fonction de façon à n'avoir par exemple que les messages dans le fichier de log.




Ami calmant, J.P