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 & VBA Redirection page web [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut IE & VBA Redirection page web
    Bonjour à tous !

    J'essaie de récupérer des données sur le web grâce au très bon tuto de qwazerty.

    Mon code est fonctionnel et me satisfait dans la plupart des cas, j'aimerais donc pouvoir le laisser tourner de temps en temps afin de passer en revue plusieurs centaines de pages.

    Cependant, j'ai souvent un soucis qui revient que je ne parviens pas à résoudre. Schématiquement ma macro opère comme ceci :
    1. je charge une page internet de type www.unsite.com/P10000
    2. j'attends que la page soit complètement chargée
    3. a Si à la fin du chargement de la page (ie.readystate = 4), cette dernière est de la forme www.unsite.com/P#####, alors le produit existe et je relève les infos qui m'intéressent
    b Sinon, la page est en général de la forme www.unsite.com/error404 et alors le produit n'existe pas, j'en prends note.
    4. je passe au produit suivant P10001

    Mon problème vient du fait que parfois, la macro observe la forme de l'url comme étant celle du 3a alors que lorsque je vérifie de mon côté, j'ai bien une erreur 404 concernant le produit visé. Je pense donc que la page www.unsite.com/P10000 atteint un état ie.readystate = 4 avant d'être redirigée vers une page d'erreur. Mon code continue donc comme si le produit existait et bug lors de l'action getelementsbyclassname (qui n'existe pas vu que le produit n'existe pas).

    Existe t-il un moyen de contourner ce problème ? J'ai essayé de faire attendre le programme 500 millisecondes avec Sleep puis de revérifier l'état de chargement de la page, mais je perds trop de temps et j'observe encore le même problème.

    Je ne pense pas être encore assez calé pour tirer au clair cette histoire, du coup je fais appel à votre aide


    En vous remerciant par avance,
    Bonne soirée à tous,

    Guillaume

  2. #2
    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 heu
    Bonjour
    voila un sujet pour Marcl

    c'est le spécialiste de l'attente des chargement de page sur le net il y a d'ailleurs plusieurs sujets dans les contributions

    maintenant la fonction "getelementsbyclassname " sache qu'elle, est très capricieuse selon la version de IE et de Excel
    tu trouvera dans les contributions ,ainsi que sur ce forum les discussions de itwoo , Marcl et moi même traitant de ce sujet

    mais n'ayant pas le code sous les yeux ca me parait assez difficile de t'aider sinon que succinctement

    mais si ton problème est que le readystate est bon mais la page non ,sans code et lien on pourra pas t'aider car ce genre de manipulation est conçue cas par cas
    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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour votre réponse. Il semble que mon problème ne soit donc pas très compliqué à résoudre.
    Après avoir lu quelques sujets, je pense pouvoir m'en sortir en demandant à la macro de patienter jusqu'au chargement de la page mais aussi du document de cette dernière.
    Cependant, l'avancement de la lecture du code reste bloqué dans la deuxième boucle, je dois donc manquer quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Attendre le chargement complet de la page
        Do Until IE.readyState = 4
            DoEvents
        Loop
     
        Do Until IE.document.readyState = 4
            DoEvents
        Loop
    Dans l'attente de votre retour,

    Guillaume

  4. #4
    Expert éminent
    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
    Par défaut




    Bonjour,

    en passant vite fait les readyState ne prennent pas les mêmes valeurs sur l'objet IE et sur l'objet document :

    valeur numérique sur IE et du texte sur le document ! Revoir le tutoriel, exemple dans cette discussion entre autres …



    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut
    Bonjour à tous !

    Après plusieurs recherches sur le net et de mon côté j'ai enfin trouvé !
    Cela venait du serveur du site qui bloquait mon accès toutes les x pages chargées.
    Ainsi, une simple gestion d'erreur permettant de suspendre la macro pendant 1:30 me permet d'éviter ce problème.

    Merci pour vos réponses, cela m'a permis d'améliorer ma macro grâce aux discussions vers lesquelles vous m'avez orienté.

    Bonne journée,

    Guillaume

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

Discussions similaires

  1. Problème VBA et pages web
    Par supercoco dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2008, 16h01
  2. VBA et Page Web
    Par kenobyalex dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2008, 10h05
  3. VBA et page Web
    Par kenobyalex dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/06/2008, 15h18
  4. VBA : copier page web dans un mail
    Par zefennec dans le forum VBA Outlook
    Réponses: 6
    Dernier message: 18/03/2008, 15h03
  5. Réponses: 2
    Dernier message: 04/11/2006, 18h30

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