IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

requête google erreur 424 objet requis


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Par défaut requête google erreur 424 objet requis
    Bonjour à tous,
    Le but de ce code est de faire des recherches google en affichant le résultat de la requête, récupérer les stats, délai et les consigner dans un tableau.
    J'ai cherché sur internet, il y avait déjà un topic dessus mais la personne n'a pas mis la solution finale : https://www.developpez.net/forums/d1...rnet-explorer/

    Donc je mets le code et je montre là où ça coince, j'arrive à ouvrir une fenêtre google et après ça plante direct avec "erreur 424 objet requis" (j'ai mis en rouge là où ça plante), j'ai bien regardé pourtant ma variable est déclarée.
    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
    43
    44
    45
    46
    Sub SearchGoogle()
    Dim IE As Object
    Dim form As Variant
    Dim button As Variant
    Dim LR As Integer
    Dim var As String
    Dim var1 As Object
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    For x = 2 To LR
    var = Cells(x, 1).Value
    Set IE = CreateObject("internetexplorer.application")
    IE.Visible = True
    With IE
    .Visible = True
    .navigate "http://www.google.fr"
    While Not .readyState = READYSTATE_COMPLETE
    Wend
    End With
    
    'Nous attendons un peu que la page se charge
    While IE.Busy
    DoEvents
    Wend
    Application.Wait (Now + TimeValue("0:00:02"))
    IE.document.getElementById("lst-ib").Value = var
    
    'Ici nous cliquons sur le bouton Chercher
    Set form = IE.document.getElementsByTagName("form")
    Application.Wait (Now + TimeValue("0:00:02"))
    Set button = form(0).onsubmit
    form(0).submit
    
    'Nous attendons que la page se charge
    While IE.Busy
    DoEvents
    
    Wend
    Application.Wait (Now + TimeValue("0:00:02"))
    Set var1 = IE.document.getElementById("resultStats")
    Cells(x, 2).Value = var1.innerText
    IE.Quit
    Set IE = Nothing
    
    Next x
    
    End Sub
    Si vous pouviez m'aider merci
    P.S : rien à voir mais j'aimerais avoir à chaque fois que je code la numérotation à gauche des lignes, j'ai pas trouvé sur internet, à part pour visual studio que je viens de télécharger mais j'ai rien compris, donc si je pouvais directement faire depuis excel ce serait plus simple merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut

    Tu devrais lire le tutoriel sur la manipulation d'IE, en particulier sur les temps d'attente avec WaitIE, parce que les boucle Do... Loop avec rien à l'intérieur c'est fortement déconseillé, si la page, pour une raison ou pour une autre ne se charge pas, tu resteras bloquée dans cette boucle, tu ne pourras plus rien faire dans Excel et tu vas perdre les modification faite depuis la dernière sauvegarde... c'est validé...plus d'une fois .

    Pense à indenter (tabulation(s) en début de ligne) ton code, tel que tu le présentes c'est illisible, sans indentation c'est comme si on lisait un texte sans les espaces.

    Pour ton problème, je ne vois aucun élément nommé "lst-ib" sur la page de Google (enfin si mais dans un amas de style). Donc pas étonnant que la ligne "plante".
    Explique plutôt ce que tu veux faire, avec un screenshot c'est bien
    [Edit] En fait j'ai compris
    La zone de texte à pour nom "q" est pas "lst-ib"
    Par contre la structure du code n'est pas terrible
    Tu as tout ce qu'il faut ICI, c'est exactement ce que tu cherches à faire, il restera juste la partie sur la récupération des stat à coder.
    Pour le bouton qui lance la recherche, "btnG", il n'existe plus, il faudra utiliser "la variante" qui consiste à utiliser Submit (j'espère que ça fonctionne encore).

    [/Edit]


    PS: Pour les numérotation de ligne, VBE ne le fait pas en natif, il faut installer un addon, j'utilise RubberDuck, il le fait, bien que je ne vois pas trop l'intérêt
    Il sait même faire les indentation du code automatiquement
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Par défaut
    Re,
    alors oui j'avais lu votre tutoriel, mais même en remplaçant par "q", cela m'affiche toujours la même erreur...
    Bon du coup, j'ai repris votre façon de faire ceci marche :
    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
    Sub GoogleVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim InputGoogleBouton As HTMLInputElement
    Dim FormGoogleCherche As HTMLFormElement
       'Chargement d'une page Web Google
       IE.navigate "www.google.fr"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le membre Document
       Set IEDoc = IE.document
     
       'On pointe notre Zone de texte
       Set InputGoogleZoneTexte = IEDoc.all("q")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
       InputGoogleZoneTexte.Value = "VBA Excel"
      'On pointe la Form qui contient Zone de Texte + Bouton (entre autres)
    Set FormGoogleCherche = IEDoc.forms("f")
     
    'On exécute l'action Submit de la Form
    FormGoogleCherche.submit
       'On attend la fin de la recherche
       WaitIE IE
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub
    Le problème c'est que moi j'avais besoin que cela se répète pour mes 5 mot clés (donc sûrement une boucle?) et que cela se mette dans mon tableau (le nombre d’occurrences et le temps obtenu) :
    Nom : TableauExcel.jpg
Affichages : 847
Taille : 18,0 Ko
    En vous remerciant,

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Bon du coup je viens de voire que dans mon tuto... j'ai fait une boucle Do...loop avec juste DoEvents dedans......

    Bref

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Explicit
     
    Sub GoogleVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim DivResultat As HTMLDivElement
    Dim FormGoogleCherche As HTMLFormElement
    Dim aCell As Range
     
        'Chargement d'une page Web Google
        IE.navigate "www.google.fr"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On pointe le membre Document
        Set IEDoc = IE.document
     
        'On bloque la mise à jour de l'affichage (gain de temps... bien qu'ici)
        Application.ScreenUpdating = False
     
        'On pointe le tableau
        With Feuil1.ListObjects("Tab_Google")
            'On boucle sur les cellules du tableau
            For Each aCell In .ListColumns("Mot-Clé").DataBodyRange
                'On regarde si la ligne est déjà traitée (en cas de relance de la macro)
                If .Range(aCell.Row, .ListColumns("Résultat").Index) = "" Then
                    'On pointe notre Zone de texte
                    Set InputGoogleZoneTexte = IEDoc.getElementsByName("q")(0)
     
                    'On définit le texte que l'on souhaite placer à l'intérieur
                    InputGoogleZoneTexte.Value = aCell.Value
     
                    'On pointe la Form qui contient Zone de Texte + Bouton (entre autres)
                    Set FormGoogleCherche = IEDoc.forms("f")
     
                    'On exécute l'action Submit de la Form
                    FormGoogleCherche.submit
     
                    'On attend la fin de la recherche
                    Set DivResultat = Nothing
                    WaitIE IE, DivResultat, "resultStats"
     
     
                    'On note les infos
                    .Range(aCell.Row, .ListColumns("Résultat").Index) = DivResultat.innerText
                End If
            Next
        End With
     
        'On réactive le rafraichissement
        Application.ScreenUpdating = False
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As InternetExplorer, Optional WaitObject As Object, Optional LinkName As String)
    Dim Limite As Integer
        'On essai de pointer l'élément
        If Not IsMissing(WaitObject) Then Set WaitObject = IE.document.all(LinkName)
     
        'On boucle tant que la page n'est pas totalement chargée
        Do Until ((IE.readyState = READYSTATE_COMPLETE) And Not IE.Busy) Or Limite = 100 Or Not WaitObject Is Nothing
            'On pointe la zone de réultat
            If Not IsMissing(WaitObject) Then Set WaitObject = IE.document.all(LinkName)
            DoEvents
            Application.Wait 100
            Limite = Limite + 1
        Loop
    End Sub
    Voila qui devrait le faire.
    Les données sont dans un tableau structuré sur la feuil1 (à adapter), il porte le nom de "Tab_Goolge"/
    Fichier démo joint.

    ++
    Qwaz
    Fichiers attachés Fichiers attachés

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Par défaut
    Merci de m'avoir répondue, alors si j'applique votre code proposé dans mon fichier : cela plante à ce niveau là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WaitIE(IE As InternetExplorer, Optional WaitObject As Object, Optional LinkName As String)
    Si j'ouvre votre fichier c'est un peu plus loin que cela plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub WaitIE(IE As InternetExplorer, Optional WaitObject As Object, Optional LinkName As String)
    Dim Limite As Integer
        'On essai de pointer l'élément
        If Not IsMissing(WaitObject) Then Set WaitObject = IE.document.all(LinkName)
    Pourquoi?
    En vous remerciant,

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Si vous me donnez le(s) message(s) d'erreur j’essaierai de répondre
    Chez moi le code s'exécute sans problème.

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Par défaut
    Ah pardon, alors pour ma feuille à moi où j'ai mis le code :
    Nom : erreur_dans_mon_fichier.jpg
Affichages : 903
Taille : 32,8 Ko

    Et par rapport à votre fichier (ça m'ouvre juste une page google et ça plante) :
    Nom : erreur_dans_votre_fichier.jpg
Affichages : 907
Taille : 24,2 Ko Nom : erreur_dans_votre_fichier_suite.jpg
Affichages : 909
Taille : 31,7 Ko
    En vous remerciant,

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Pour l'erreur sur votre fichier, voyez du coté des références Menu Outils, Références...
    Il doit y avoir Microsoft HTML Object et Microsoft Internet Control de cochés

    Pour mon fichier... plein de modifs
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    Option Explicit
    'Certaines lignes sont rouge, c'est normal, il ne faut rien modifier
    #If VBA7 Then
        Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems
    #Else
        Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long) 'For 32 Bit Systems
    #End If
     
    Sub GoogleVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim DivResultat As HTMLDivElement
    Dim FormGoogleCherche As HTMLFormElement
    Dim aCell As Range
     
        'Chargement d'une page Web Google
        IE.navigate "www.google.fr"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On pointe le membre Document
        Set IEDoc = IE.document
     
        'On bloque la mise à jour de l'affichage (gain de temps... bien qu'ici)
        Application.ScreenUpdating = False
     
        'On pointe le tableau
        With Feuil1.ListObjects("Tab_Google")
            'On boucle sur les cellules du tableau
            For Each aCell In .ListColumns("Mot-Clé").DataBodyRange
                'On regarde si la ligne est déjà traitée (en cas de relance de la macro)
                If .Range(aCell.Row, .ListColumns("Résultat").Index) = "" Then
                    'On pointe notre Zone de texte
                    Set InputGoogleZoneTexte = IEDoc.getElementsByName("q")(0)
     
                    'On définit le texte que l'on souhaite placer à l'intérieur
                    InputGoogleZoneTexte.Value = aCell.Value
     
                    'On pointe la Form qui contient Zone de Texte + Bouton (entre autres)
                    Set FormGoogleCherche = IEDoc.forms("f")
     
                    'On exécute l'action Submit de la Form
                    FormGoogleCherche.submit
     
                    'On attend la fin de la recherche
                    Set DivResultat = Nothing
                    WaitIE IE, DivResultat, "resultStats"
     
     
                    'On note les infos
                    .Range(aCell.Row, .ListColumns("Résultat").Index) = DivResultat.innerText
                End If
            Next
        End With
     
        'On réactive le rafraichissement
        Application.ScreenUpdating = False
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As InternetExplorer, Optional WaitObject As Variant, Optional LinkName As String)
    Dim Limite As Integer
    Dim anObject As Object
     
        'On pointe l'objet si existant
        If (Not IsMissing(WaitObject)) Then Set anObject = WaitObject
     
        'On boucle tant que la page n'est pas totalement chargée
        Do Until ((IE.readyState = READYSTATE_COMPLETE) And Not IE.Busy) Or Limite = 100
            DoEvents
            Sleep 100
            Limite = Limite + 1
        Loop
     
        Limite = 0
        Do Until Limite = 100 Or Not anObject Is Nothing Or IsMissing(WaitObject)
            'On pointe la zone de réultat
            If Not IE.document Is Nothing Then Set anObject = IE.document.all(LinkName)
            DoEvents
            Sleep 100
            Limite = Limite + 1
        Loop
     
        If (Not IsMissing(WaitObject)) Then Set WaitObject = anObject
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 88
    Par défaut
    Bonjour,
    Merci! Votre code dans votre fichier marche, mais si je le mets dans mon fichier à moi, cela ne marche pas, j'ai renommé la feuille parce que je pensais que c'était cela le problème mais ça ne marche pas plus, j'ai aussi vérifié que le nom de mon tableau était bon, mais toujours une erreur au même endroit ...
    J'ai une erreur d'exécution 424 objet requis, voici en bleu les modifications que j'ai faîtes pour essayer de résoudre cette erreur
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Option Explicit
    'Certaines lignes sont rouge, c'est normal, il ne faut rien modifier
    #If VBA7 Then
        Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems
    #Else
        Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long) 'For 32 Bit Systems
    #End If
     
    Sub GoogleVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim DivResultat As HTMLDivElement
    Dim FormGoogleCherche As HTMLFormElement
    Dim aCell As Range
    Sheets("Sheet1").Activate
    Dim Sheet1
     
        'Chargement d'une page Web Google
        IE.navigate "www.google.fr"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On pointe le membre Document
        Set IEDoc = IE.document
     
        'On bloque la mise à jour de l'affichage (gain de temps... bien qu'ici)
        Application.ScreenUpdating = False
     
        'On pointe le tableau
       With Sheet1.ListObjects("Tableau_test") 'c'est ici qu'apparaît 424 
            'On boucle sur les cellules du tableau
            For Each aCell In .ListColumns("Mot-Clé").DataBodyRange
                'On regarde si la ligne est déjà traitée (en cas de relance de la macro)
                If .Range(aCell.Row, .ListColumns("Résultat").Index) = "" Then
                    'On pointe notre Zone de texte
                    Set InputGoogleZoneTexte = IEDoc.getElementsByName("q")(0)
     
                    'On définit le texte que l'on souhaite placer à l'intérieur
                    InputGoogleZoneTexte.Value = aCell.Value
     
                    'On pointe la Form qui contient Zone de Texte + Bouton (entre autres)
                    Set FormGoogleCherche = IEDoc.forms("f")
     
                    'On exécute l'action Submit de la Form
                    FormGoogleCherche.submit
     
                    'On attend la fin de la recherche
                    Set DivResultat = Nothing
                    WaitIE IE, DivResultat, "resultStats"
     
     
                    'On note les infos
                    .Range(aCell.Row, .ListColumns("Résultat").Index) = DivResultat.innerText
                End If
            Next
        End With
     
        'On réactive le rafraichissement
        Application.ScreenUpdating = False
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As InternetExplorer, Optional WaitObject As Variant, Optional LinkName As String)
    Dim Limite As Integer
    Dim anObject As Object
     
        'On pointe l'objet si existant
        If (Not IsMissing(WaitObject)) Then Set anObject = WaitObject
     
        'On boucle tant que la page n'est pas totalement chargée
        Do Until ((IE.readyState = READYSTATE_COMPLETE) And Not IE.Busy) Or Limite = 100
            DoEvents
            Sleep 100
            Limite = Limite + 1
        Loop
     
        Limite = 0
        Do Until Limite = 100 Or Not anObject Is Nothing Or IsMissing(WaitObject)
            'On pointe la zone de réultat
            If Not IE.document Is Nothing Then Set anObject = IE.document.all(LinkName)
            DoEvents
            Sleep 100
            Limite = Limite + 1
        Loop
     
        If (Not IsMissing(WaitObject)) Then Set WaitObject = anObject
    End Sub
    En vous remerciant

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut

    Vous confondez déclaration Dim Sheet1 as Worksheet et instanciation Set Sheet1 = Thisworkbook.Sheets("Sheet1")Dans le premiers cas vous dite à VBE la variable Sheet1 est de type WorkSheet
    Ensuite on dit à VBE la variable Sheet1 va pointer l'onglet nommé "Sheet1" dans le classeur.

    Dans les modifications que vous avez faites vous déclarer Sheet1 en tant que type Variant (type par défaut si non précisée)
    Par contre à aucun moment vous ne dite à quelle feuille elle doit faire référence. C'est pour ça qu'un moment de l'utiliser avec la ligne With vous obtenez une erreur.

    Concernant la ligne With Feuil1.ListObjects("Tab_Google") ici Feuil1 ne correspond pas au nom inscrit sur l'onglet en bas de feuille, c'est le codeName, tu le trouveras ici
    Nom : 2015-01-18_134906.png
Affichages : 823
Taille : 14,2 Ko
    Le codename c'est le (name) inscrit dans le tableau en bas.
    Il est pratique dans le code VBA d'utiliser le code name pour plusieurs avantage
    1. C'est plus cours que ThisWorkBook.Sheets("Feuil1"), le classeur est "inclus" dans l'expression
    2. Si l'utilisateur change le nom sur l'onglet ça n'a pas d'impact


    Il faut donc que vous mettiez le codename de la page où se trouve le tableau à la place de Feuil1.ListObject(....).

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Nouveau candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut requête google erreur 424 objet requis
    Bonjour,
    J'ai exactement les mêmes problèmes que Statistiques33.
    J'ai fait tout pareil, mais ne comprend pas bien le dernier message de QWAZERTY.

    Pourrais-je recevoir un lien de chargement du dernier fichier, modifié selon la denière demande de QWAZERTY pour voir comment coder ce VBA?


    J'ai encore essayé vos conseils, mais dois avouer humblement que je n'ai pas le bon niveau de connaissance pour trouver la bonne formule.
    Je joins mon dernier essai qui bloque sur une erreur 9 à la ligne : "With XXX.ListObjects("Tableau_test")"
    Merci de me dire ce qu'il conviendrait que je change.
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut

    Dans ton cas ESCOURBANIES, le problème est différent

    Tu déclares XXX comme étant un objet, ce qui en soit n'est pas faut et ne rend pas ton code non fonctionnel. Pour autant on préférera utiliser le bon type plutôt que le type Object qui est un peu trop générique. Donc ici c'est une feuille, donc un WorkSheet, il faut donc écrire
    Ensuite tu fais en sorte que ta variable pointe sur la feuille "Feuil1". Tu as choisi de le faire en lui indiquant le nom qui figure en bas de la feuille sur l'onglet, c'est un choix, pas de soucis c'est fonctionnel tant que personne ne change ce nom.

    C'est ensuite qu'arrive les ennuis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With XXX.ListObjects("Tableau_test")
    Ici tu demande à VBE de trouver sur Feuil1 un ListObject dont le nom est "Tableau_test". Hors ce tableau n'existe pas sur la feuille, ce qui provoque l'erreur d'exécution. Un ListObject, c'est un tableau structuré, pour en ajouter un à la feuille, il faut aller dans le menu Excel Insertion, puis cliquer sur le bouton "Tableau", il y a un très bon tuto de Pierre Fauconnier, qui te détaillera la marche à suivre.
    Il faudra bien prendre soin de nommer ce tableau structuré "Tableau_test" pour que ton code fonctionne.

    Je te souhaite une bonne soirée
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    Salut,
    Quazerty pour faire fonctionner ton code chez moi (windows 10 excel 2010 IE 11) j'ai du faire 2 modifications :
    1 - J'avais la même erreur que Statistiques33 sur le LinkName c'est le nom de l'élément résultat qui n'était pas bon voilà ce que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    ' WaitIE IE, DivResultat, "resultStats"
                    WaitIE IE, DivResultat, "result-stats"
    2 - J'avais parfois des erreurs (permission denied) entre chaque requête de la boucle. J'ai mis une tempo comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'On exécute l'action Submit de la Form
                    FormGoogleCherche.submit
                    Sleep 1000
                    'On attend la fin de la recherche
    Nullosse

  14. #14
    Nouveau candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Comment simuler l'appui du bouton "Recherche" sans le site "https://www.codespostaux.com/home/
    Bonjour,
    J'ai réussi à réaliser ce que je voulais faire, mais un dernier détail demeure une énigme.
    Sans doute pourriez-vous m'aider.
    Il s'agirait de simuler l'appui sur la touche "recherche" du site pour que cette recherche se lance
    Merci d'avance de votre aide.
    Voici mon code: (repérer la ligne contenant * ICI JE VOUDRAIS SIMULER.....)

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub VBIECP()
    '
    Dim VILLE As String
    VILLE = InputBox("ENTRER UN CODE POSTAL OU UN NOM DE COMMUNE")
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim InputGoogleBouton As HTMLInputElement
    Dim FormGoogleCherche As HTMLFormElement
     
    'Chargement d'une page Web Google
       IE.navigate "https://www.codespostaux.com/home/"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'attente du chargement de la page
       WaitIE IE
     
       'marquer le membre Document
       Set IEDoc = IE.document
     
      'marquer la Zone de texte
       Set InputGoogleZoneTexte = IEDoc.all("q")
     
       'chargement du texte à rechercer
       InputGoogleZoneTexte.Value = VILLE
     
    ' * ICI JE VOUDRAIS SIMULER L'APPUI SUR LE BOUTON "RECHERCHE" afin de lancer la recherche
    ' * et ne trouve pas comment procéder
     
     
    ' attente fin de la recherche
       WaitIE IE
     
       'Libération des variables
       Set IE = Nothing
       Set IEDoc = Nothing
     
       'appui touche bouton Entrée + touche "Verr.Num"
       SendKeys "{ENTER}"
     
       SendKeys "{NUMLOCK}"
     
     
    End Sub
    Sub WaitIE(IE As InternetExplorer)
       'Boucle tant que la page n'est pas totalement chargée
       Do Until IE.readyState = READYSTATE_COMPLETE
          DoEvents
       Loop
    End Sub

  15. #15
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    Salut,
    Citation Envoyé par ESCOURBANIES Voir le message
    Bonjour,
    Il s'agirait de simuler l'appui sur la touche "recherche" du site pour que cette recherche se lance
    Le bouton de Recherche se situe dans le seul formulaire de la page (forms(0)) qui ne contient que ce bouton donc tu peux faire :
    pour simuler l'appui sur le bouton de recherche.
    Nullosse

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/12/2009, 21h12
  2. erreur 424, objet requis
    Par Nessie37 dans le forum VBA Access
    Réponses: 8
    Dernier message: 08/01/2009, 12h20
  3. Erreur 424 objet requis
    Par davyvba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 17h52
  4. erreur "424" Objet requis
    Par fifrelin_70 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 29/10/2007, 19h48
  5. Erreur 424 Objet requis sur connexion à Access
    Par darkian dans le forum ASP
    Réponses: 4
    Dernier message: 21/06/2006, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo