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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 128
    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 128
    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 : 859
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 128
    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 128
    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 128
    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 128
    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

Discussions similaires

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

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