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

VBA Access Discussion :

Affectation qui disparait toute seule


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Par défaut Affectation qui disparait toute seule
    Bonjour,

    J'ai un souci auquel je ne comprend rien.
    Voici déjà un petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Set HTML_res = doc.body
                On Error GoTo reload
                'Cas d'un mauvais chargement, on reload la page
     
                monHTML = HTML_res.outerHTML
    Ce morceau de code est placé autour d'une grosse procédure qui effectue une recherche sur un site internet des informations. Elle reconstite la procédure que ferait un humain... qui consiste à saisir les critères de recherches et d'appuier sur le bouton "rechercher".
    Les 3 lignes de code précedentes représentent la récéption du code source de la page de resultat de la recherche.

    Le bug se produit sur la derniere ligne (monHTML = HTML_res.outerHTML)... Lorsque l'erreur se produit, la variable HTML_res vaut "Nothing".... alors qu'aucune autre instruction se trouve entre l'affectation et l'utilisation de cette variable...

    De plus, si je met un point d'arret sur la ligne Set HTML_res = doc.body, et que j'appuie sur F5 pour continuer l'execution, tout fonctionne bien...

    Enfin, je ne comprend pas pourquoi l'erreur n'est pas réceptionnée par la ligne On Error GoTo reload...

    Merci d'avances pour vos idées...

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    tu as peut-être un problème de temporisation/synchronisation.
    Si tu utilises un objet InternetExplorer pour charger une page web, la méthode Navigate n'attend pas que la page soit chargée pour passer à la ligne de code suivante.

    Dans ton code je dirai que doc ou son membre body sont Nothing.

    Ce n'est pas infaillible mais voici comment je procède.
    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
    ' Référence VB utilisées
    ' Microsoft Internet Controls   : Library SHDocVw (\WINDOWS\system32\shdocvw.dll)
    ' Microsoft HTML Object Library : Library MSHTML (\WINDOWS\system32\MSHTML.TLB)
    Dim IE As SHDocVw.InternetExplorer
    Dim htDoc As MSHTML.HTMLDocument
     
    ' Création navigateur web et ouvrir http://access.developpez.com/
    Set IE = New SHDocVw.InternetExplorer
    ' ou
    'Set IE = CreateObject("InternetExplorer.Application")
     
    IE.Visible = True
    IE.navigate "http://access.developpez.com/"
     
    ' Attendre chargement complet de la page
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.ReadyState = READYSTATE_COMPLETE
     
    ' Récupérer l'objet Document de la page
    Set htDoc = IE.Document
    La boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do
      DoEvents
    Loop Until IE.Busy = False And IE.ReadyState = READYSTATE_COMPLETE
    est sensée garantir le chargement complet de la page.
    Elle ne fonctionne pas dans le cas d'une redirection vers une autre page.

    En tout cas une chose est sûre. Tant que la page n'est pas complètement chargée, Document vaut Nothing.

    En espèrant que ça t'aide un peu. A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 153
    Par défaut
    Salut,

    Ah, ben manifestement t'as raison... personnellement je ne connaissais que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    While IE.Busy 
      DoEvents
    Wend
    Je fais encore quelques tests mais ça a l'air bon.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Process qui disparait tout seul
    Par metalcoyote dans le forum Administration système
    Réponses: 2
    Dernier message: 01/04/2009, 18h41
  2. Process qui disparait tout seul
    Par metalcoyote dans le forum Linux
    Réponses: 2
    Dernier message: 01/04/2009, 18h41
  3. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  4. pc portable qui reboot tout seul
    Par pepper18 dans le forum Windows XP
    Réponses: 23
    Dernier message: 24/06/2006, 14h51
  5. [MFC] un CDialog qui disparait tout seul.
    Par tut dans le forum MFC
    Réponses: 4
    Dernier message: 21/06/2006, 14h01

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