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 :

IE.document contient toujours <Aucune variable> et donne une incompatibilité de type


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut IE.document contient toujours <Aucune variable> et donne une incompatibilité de type
    Bonjour,

    Je suis le tutoriel de Qwazerty Interaction avec Internet Explorer via VBA Excel et en reprenant le code donné en exemple, je m'aperçois que la variable IE n'est pas alimentée.

    Le code que j'emploie est celui de la section IV-C. Inscrire du texte dans une zone de texte
    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
     
    Option Explicit
    Sub RechercheVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim InputGoogleBouton As HTMLInputElement
     
       '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 attend la fin de la recherche
       WaitIE IE
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub
    Sub WaitIE(IE As InternetExplorer)
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.readyState = READYSTATE_COMPLETE
          DoEvents
       Loop
    End Sub
    Les références sont : Nom : références.jpg
Affichages : 1201
Taille : 60,8 Ko
    J'exécute la macro en mode pas à pas.
    La page internet explorer 11 est bien ouverte et chargée.

    La fenêtre espion donne, quand je suis arrêté avant l'exécution de la ligne 20 Set IEDoc = IE.document : Nom : Capture.JPG
Affichages : 1142
Taille : 49,0 Ko

    Et le message d'erreur (Erreur d'exécution '13': incompatibilité de type) quand j'exécute cette ligne 20 Set IEDoc = IE.document : Nom : erreur.jpg
Affichages : 1147
Taille : 15,5 Ko

    Comment faire en sorte que le contenu de la page internet soit effectivement passée dans IE afin que je puisse continuer à travailler s'il vous plaît ?
    Merci d'avance et bonne journée.

  2. #2
    Membre averti
    Inscrit en
    Août 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 66
    Par défaut
    Essaie d'initialiser ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'Initialisation des variables
       Set IE = CreateObject("InternetExplorer.Application")

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut
    Citation Envoyé par bobby5169 Voir le message
    Essaie d'initialiser ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'Initialisation des variables
       Set IE = CreateObject("InternetExplorer.Application")
    Merci bobby5169, je viens d'essayer. Rien ne change, les erreurs sont identiques.

  4. #4
    Membre averti
    Inscrit en
    Août 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 66
    Par défaut
    J'avais eu un besoin similaire et ma boucle d'attente était plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    While oNav.ReadyState <> READYSTATE_COMPLETE Or oNav.Busy = True
              DoEvents
    Wend
    Alors que la tienne finalement, tu n'y rentres jamais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Do Until IE.readyState = READYSTATE_COMPLETE
          DoEvents
    Loop

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    il y a tellement d'exemple sur le forum que je me demande si tu a utiliser le moteur de recherche de DVP ( ce qui m'etonnerait )

    puré!!!
    exemple 1
    on ouvre et navigue dans google et manipule les htmlelements

    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 RechercheVBAExcel()
    'Déclaration des variables
        Dim IE As Object, IEDoc As Object, InputGoogleZoneTexte As Object, InputGoogleBouton As Object
        Set IE = CreateObject("internetexplorer.application")    'creation de l'intence de internet
        IE.navigate "www.google.fr"    'Chargement d'une page Web Google
     
        IE.Visible = True    'Affichage de la fenêtre IE
     
        Do: DoEvents: Loop While IE.readystate <> 4    'On attend le chargement complet de la page
        Set IEDoc = IE.document    'On pointe le membre Document
     
        Set InputGoogleZoneTexte = IEDoc.all("q")    'On pointe notre Zone de texte
        InputGoogleZoneTexte.Value = "VBA Excel"    'On définit le texte que l'on souhaite inscrire à l'intérieur
     
        Set InputGoogleBouton = IEDoc.all("btnK")(0)    ' on pointe sur le bouton rechercher
        InputGoogleBouton.Click    ' on clique sur le bouton rechercher
     
        Do: DoEvents: Loop While IE.readystate <> 4    'On attend la fin de la recherche
     
        ' analyse de ta recherche ici 
        '........
        '........
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
    !! SINON TU PEUX FAIRE PLUS SIMPLE !!!


    exemple 2
    on argumente l'url directement !!!!!et pas besoins de manipuiler les inputs

    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
    Sub RechercheVBAExcel2()
    'Déclaration des variables
        Dim IE As Object, IEDoc As Object, InputGoogleZoneTexte As Object, InputGoogleBouton As Object, recherche As String
        recherche = "VBA EXCEL"    'ce que tu recherche
        Set IE = CreateObject("internetexplorer.application")    'creation de l'intence de internet
     
        IE.Visible = True    'Affichage de la fenêtre IE
     
       'Chargement d'une page Web Google ARGUMENTEE!!!!!!!!!!!!!!!la recherche se fait toute seule sans manipulation des htmlelements
        IE.navigate "https://www.google.fr/search?source=hp&q=" & recherche & "&btnK=Recherche+Google&oq=vba+excel"
     
        Do: DoEvents: Loop While IE.readystate <> 4    'On attend le chargement complet de la page
     
       ' analyse de ta recherche ici 
       '........
       '........
     'On libère les variables
        Set IE = Nothing: Set IEDoc = Nothing
    End Sub
    100 fois je l'ai donné cet exemple

    et si c'est pas assez explicit
    ben tu fait une recherche sur DVP
    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
    Sub RechercheVBAExcel3()
    'Déclaration des variables
        Dim IE As Object, IEDoc As Object, InputGoogleZoneTexte As Object, InputGoogleBouton As Object, recherche As String
        recherche = "VBA internet google"    'ce que tu recherche
        Set IE = CreateObject("internetexplorer.application")    'creation de l'intence de internet
     
        IE.Visible = True    'Affichage de la fenêtre IE
        'Chargement d'une page Web Google ARGUMENTEE!!!!!!!!!!!!!!! avec la recherche
        IE.navigate "https://www.developpez.net/forums/search.php/?query=" & recherche
     
        Do: DoEvents: Loop While IE.readystate <> 4    'On attend le chargement complet de la page
     
        IE.document.getelementsbyname("searchuser")(0).Value = "" 'membre recherché 
        IE.document.getelementsbyname("dosearch")(0).Click ' click dessus
        'On libère les variables
        Set IE = Nothing: Set IEDoc = Nothing
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut Erreurs sur les trois exemples
    Bonsoir patricktoulon,

    Merci pour tes informations complètes (j'ai déjà passé beaucoup de temps partout pour résoudre mon problème). J'aime bien trouver seul les solutions, c'est une façon d'apprendre.

    J'exécute les trois exemples en mode pas à pas et lentement pour laisser le temps à la page de se charger, même s'il y a la boucle pour s'en assurer.
    Sur l'exemple 1 (ligne 11, DoEvents) et l'exemple 2 (ligne 12, DoEvents), j'ai une erreur 462
    Nom : 462.jpg
Affichages : 1057
Taille : 17,1 Ko
    Sur l'exemple 3 (ligne 13, IE.document.getElementsByName("searchuser")(0).Value = "") donne une erreur 91. IE contient bien des informations et IE.Document contient <Aucune variable>
    Nom : 91.png
Affichages : 1040
Taille : 3,5 Ko

    Next step ?

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    jepense que tu a un soucis avec tes librairie IE
    les codes sont simples

    l'erreur sur doevents est sinificative que l'instance de IE ne se fait pas pour alors je parirais a 10 contre 1 que tu tourne sur 2016 et la je peux rien por toi
    des erreurs innexpliquées avec IE/vba sur excel 2016 m'ont été rapportées et en grand nombre
    notament l'erreur avec IE 11 qui avait été resolu avec un KB sur 2007 et W7 est bien revenu avec 2016
    essaie un wait de 5 secondes avant de do loop
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut librairies ?
    re
    Je suis d'accord que les codes sont simples et je les avais fait marcher il y a deux ans.
    Comment corriger les problèmes de librairie IE (je soupçonne aussi un problème dans ces entrailles, mais ça me dépasse) ?

    J'ai retourné les trois exemples en patientant 10 secondes avant la ligne critique.
    J'ai les mêmes erreurs, toutefois, dans l'exemple 2, j'ai pris l'initiative de remplacer
    IE.navigate "https://www.google.fr/search?source=hp&q=" & recherche & "&btnK=Recherche+Google&oq=vba+excel"
    par
    IE.navigate "http://aila.fr/" ' pour tester autre chose
    et je n'ai pas eu d'erreur.
    J'ai aussitôt essayé avec cette url aila.fr et l'exemple 1 marche. Pour mieux tester, j'ai modifié le code de l'exemple 1 en :
    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
    Option Explicit
    Sub RechercheVBAExcel()
    'Déclaration des variables
        Dim IE As Object, IEDoc As Object, InputGoogleZoneTexte As Object, InputGoogleBouton As Object
        Dim collection_item As IHTMLElementCollection, champ As String
        Set IE = CreateObject("internetexplorer.application")    'creation de l'intence de internet
        'IE.navigate "www.google.fr"    'Chargement d'une page Web Google
        IE.navigate "aila.fr"
     
        IE.Visible = True    'Affichage de la fenêtre IE
     
        Do: DoEvents: Loop While IE.readyState <> 4    'On attend le chargement complet de la page
        Set IEDoc = IE.document    'On pointe le membre Document
     
        'Set InputGoogleZoneTexte = IEDoc.all("q")    'On pointe notre Zone de texte
        'InputGoogleZoneTexte.Value = "VBA Excel"    'On définit le texte que l'on souhaite inscrire à l'intérieur
     
        'Set InputGoogleBouton = IEDoc.all("btnK")(0)    ' on pointe sur le bouton rechercher
        'InputGoogleBouton.Click    ' on clique sur le bouton rechercher
     
        Do: DoEvents: Loop While IE.readyState <> 4    'On attend la fin de la recherche
     
        ' analyse de ta recherche ici
     
        Set collection_item = IEDoc.getElementsByTagName("h2")
        MsgBox collection_item.Item(1).innerText
        MsgBox collection_item.Item(2).innerText
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
    Les deux MsgBox collection_item.Item(x).innerText donnent bien les résultats attendus.

    J'en arrive à déduire qu'il peut/doit y avoir un problème à résoudre avec les librairies et que le code fonctionne avec des sites sans https (exemples 1 et 2), ce qui peut indiquer une piste à investiguer...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut réparation Excel
    J'ai réparé Excel en suivant les instructions de Microsoft, mais ça ne change rien.
    D'autres idées ?
    Merci

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut IE 11
    J'ai aussi réinstallé Internet Explorer 11.
    Pas mieux.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Amateur VBA et PHP
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur VBA et PHP
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut Pour votre information
    Je n'ai pas réussi à résoudre le problème.
    Les trois alternatives que j'ai examinées :
    1. la fonction webread de Matlab,
    2. les outils de web scrapping,
    3. la solution suivante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      Do While IsNull(IE.document.getElementsByTagName("img")): DoEvents: Loop
      Set collection_item = IE.document.getElementsByTagName("img")
      For Each item In collection_item
          If (item.className = "logo_societe" And item.alt = "vue_2") Then
              Select Case item.ParentNode.nodeName
                  Case ... mon code
       
              End Select
          End If
      Next 'item (img)

    Si ça peut aider ceux qui rencontrent les mêmes problèmes.
    Merci à ceux qui m'ont aidé.

Discussions similaires

  1. Problème sur la variable IE <aucune variable>
    Par Symone dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/11/2013, 17h44
  2. Problème sur la variable IE <aucune variable>
    Par licwimi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/10/2012, 21h41
  3. Allouer un espace mémoire toujours à la même variable
    Par GatH7614 dans le forum Débuter
    Réponses: 6
    Dernier message: 19/08/2010, 13h52
  4. [JavaScript] [FAQ] Mais pourquoi faut-il toujours déclarer ses variables ?
    Par Auteur dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/01/2009, 20h08
  5. Aucune variable dans $_POST
    Par Anduriel dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2006, 17h06

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