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 :

manipulation de IE sous VBA (transféré du forum Contribuez)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 39
    Points
    39
    Par défaut manipulation de IE sous VBA (transféré du forum Contribuez)
    Tout d'abord bonjour à tous et merci pour le tuto très instructif de Qwazerty (auquel il faut se référer pour comprendre mon sujet) qui m'a décidé à ré-écrire des macros en VBA pour automatiser certains accès à une BDD sur un site professionnel sécurisé.
    Je précise que j'avais déjà écrit de telles macros quelques années auparavant et que tout marchait bien. Mais depuis, mon PC et ses logiciels ont changé et là rien ne va plus...
    Je suis sous W7 Édition familiale Premium SP1 64 bits, avec Office pro + 2010 (v.14.0.7147.5001 32 bits) et donc VBA (v.7.0.1628), avec IE11 (v.11.0.9600.17691 màj 11.0.17 32 bits semble-t-il) ; je précise également que Java 32 bits et 64 bits sont à jour également.
    Évidemment, les références HTML Object Library et Internet Controls sont activées et pas qu'elles.

    Mon problème dès le code de base du tuto : j'ai l'erreur "objet non défini" sur la ligne Set IEDoc = IE.document alors qu'il est préalablement bien défini par "Dim IEDoc As HTMLDocument" donc, avant le WaitDoc...

    J'ai suivi pas à pas le tuto et les ajouts des commentaires.
    Voici le code avec d'abord les déclarations (je ne reproduis évidemment pas le contenu des constantes) :

    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
     
    Option Explicit
    Public Const CNX_URL As String = "http:xxxx"
    Public Const CNX_LOG As String = "xxxx"
    Public Const CNX_MDP As String = "xxxx"
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub Essai1_VBA_IE()
      Dim IE As New InternetExplorer
      Dim IEDoc As HTMLDocument
     
      'Chargement d'une page Web Google (pour info la constante est déclarée
      IE.navigate CNX_URL
      IE.Visible = True
      WaitIE IE
     
      Set IEDoc = IE.Document
      WaitDoc IEDoc
     
      IEDoc.getElementById("le_log").Value = CNX_LOG
      IEDoc.getElementById("le_pass").Value = CNX_MDP
      IEDoc.getElementById("btnConnexion").Click
      WaitIE IE
     
      ' suite du code...
     
      'On libère les variables
      Set IE = Nothing
      Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As Internet.Explorer)
      Do While IE.readyState <> READYSTATE_COMPLETE
        DoEvents
        Sleep 1000
      Loop
    End Sub
     
    Sub WaitDoc(IEDoc As HTMLDocument)
      Do While Not IEDoc.readyState = "complete"
        DoEvents
        Sleep 1000
      Loop
    End Sub
    J'ai ré-essayé en faisant une autre déclaration de IE (cf. un des commentaires du tuto) sans plus de succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Dim IE As Object
      Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
    Merci d'avance
    Passionné d'anciennes automobiles, j'ai créé un site dédié qui est loin d'être terminé : https://www.anciennes-automobiles.fr

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par PhilippeF75 Voir le message
    j'ai l'erreur "objet non défini" sur la ligne Set IEDoc = IE.document
    Bonjour,

    j'entrevois deux possibilités :

    • mettre en commentaire la ligne n°10 en cas de déclaration erronée d'objet;

    • si la même erreur survient, c'est plutôt la page qui n'est pas encore disponible.

    Dans ce cas remplacer la ligne n°15 par While IE.Busy Or IE.ReadyState < 4: DoEvents: Wend

    Sinon sans accéder à la page, il est difficile d'apporter de l'aide.

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 39
    Points
    39
    Par défaut
    Bonsoir et merci Marc-L,
    ça progresse mais l'erreur intervient alors dès que je sollicite les éléments de IEDoc, ils n'existent pas dans les variables locales et cela provoque une erreur "objet requis" ligne 20.
    Je précise que ça n'a aucun lien avec la page affichée, l'erreur survient en affichant google par exemple eten essayant de remplir le champ de recherche comme dans l'exemple du tuto.
    C'est un blocage logiciel que je ne m'explique pas IEDoc ou même en faisant une variante IE.Document n'ont aucun élément dans la fenêtre Variables locales...
    Passionné d'anciennes automobiles, j'ai créé un site dédié qui est loin d'être terminé : https://www.anciennes-automobiles.fr

Discussions similaires

  1. Manipulation de rapport sous VBA
    Par zoulou153 dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/04/2013, 17h02
  2. Cases à cocher sous VBA
    Par dran dans le forum Général VBA
    Réponses: 4
    Dernier message: 15/11/2004, 21h50
  3. Réponses: 8
    Dernier message: 07/10/2004, 11h08
  4. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07
  5. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39

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