Bonjour thahardy
je post la réponse a ta demande sur un nouveau post
et a l'avenir évite de polluer le fil d'une autre discussion
merci de ta compréhension

voila ton code
j'ai modifié la wait IE ,on oublie souvant le "IE.busy"
en effet parfois le readystate nous donne la main mais la page travaille encore

j'ai modifié l'utilisation de l'object IE maintenant en late binding afin d'avoir un fichier transportable et utilisable sur tout ordi avec exel 2003 minimum sans avoir de références a activer
j'ai tronqué aussi l'utilisation de variable object (famille "IE") pas necessaire dans ce cas présent

j'ai mis quelques commentaire qui t'aideront a comprendre le fonctionnement
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
Option Explicit
Sub WaitIE(IE As Object)
'On boucle tant que la page n'est pas totalement chargée
    Do: DoEvents: Loop While IE.readystate <> 4 Or IE.busy
End Sub
Sub RechercheVBAExcel()
'Déclaration des variables
    Dim IE As Object, matable As Object, i As Long, lignes As Object, valeur As String
    Set IE = CreateObject("internetexplorer.application")
    IE.navigate "www.google.com/finance"    'Chargement d'une page Web Google
    IE.Visible = True
    'Affichage de la fenêtre IE
    WaitIE IE    'On attend le chargement complet de la page
    With IE.document
        .all("q").Value = "VSAR"    'on inscrit le texte dans le textbox "q"
        .all("gbqfb").Click    'On click sur le  bouton
        WaitIE IE
        Set matable = .getelementsbyclassname("snap-data")(0)    'on recupere la table concernée par sa classe ,c'est la 1 ere donc l'index 0  !!!
        Set lignes = matable.getelementsbytagname("tr")    'on prent les lignes complete du tableau
        For i = 0 To lignes.Length - 1
            'on test si la premiere cellule de chaque ligne est ecrit "Mkt cap" si oui la valeur est la 2 eme cellule  de la meme ligne
            If RTrim(lignes(i).Children(0).innertext) = "Mkt cap" Then valeur = lignes(i).Children(1).innertext
        Next
    End With
    IE.Quit
    Set IE = Nothing 'On libère la variable "IE"
 
    MsgBox valeur
    End Sub