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 :

Macro VBA interactive IE ne fonctionne pas sans point d'arrêt [XL-2010]


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
    Inscrit en
    Août 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 16
    Par défaut Macro VBA interactive IE ne fonctionne pas sans point d'arrêt
    Bonjour à tous,

    J'ai une macro qui est chargée de récupérer le statut d'un colis sur le site de colissimo et de le retranscrire dans une cellule définie.

    Celle-ci fonctionne uniquement (entendre : récupère le texte souhaité) si je met un point d'arrêt à un endroit précis.

    Je met en pièce jointe le fichier et dans la macro, il est indiqué à quel endroit je dois mettre ce point d'arrêt pour que le texte récupéré soit bon, en l’occurrence, sur le fichier exemple, la macro doit récupérer le texte "votre colis est livré".

    Quelqu'un aurait-il déjà eu ce problème et si oui, comment le résoudre svp ?

    Merci à tous par avance pour vos suggestions/solutions.

    Dadxl
    Fichiers attachés Fichiers attachés

  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 re
    Bonjour encore un soucis avec la gestion d'attentes
    je sais pas ce qui font les ebmasters en cemoment mais ils déraillent
    bon !!!
    au grand mot les grands remèdes on vire ie et on utilise une requete

    cette macro te met tout les etapes de l'acheminement dans les cellules colonne G des references respectives
    une requete est de toute manieres plus rapide
    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 test()
        Dim Req, url
        url = "http://www.colissimo.fr/portail_colissimo/suivre.do?language=fr_FR"
        For Each cel In Range("A2", Cells(Rows.Count, 1).End(xlUp))
        Set Req = CreateObject("microsoft.xmlhttp")
        With Req
            .Open "POST", url, False
             .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
             .send "parcelnumber=" & Cel.Text & "&language=fr_FR"
               With CreateObject("htmlfile")
                .write Req.responseText
                compte_rendu = .getElementsByTagName("Table")(2).innerText
                cel.Offset(0, 6) = compte_rendu
            End With
        End With
    Next
    End Sub
    Nom : demoingto64 in-out.gif
Affichages : 609
Taille : 205,9 Ko
    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
    Inscrit en
    Août 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 16
    Par défaut Merci !
    Bonjour patricktoulon !

    Merci beaucoup. C'est top !

    Je vais tacher de comprendre le fonctionnement de la requête et également essayer de la modifier pour n'obtenir que le dernier statut dans la colonne G et le premier statut dans la colonne F, ce que je devrais parvenir à faire je pense sans trop de difficultés, mais je me permet de ne pas mettre en résolu le topic pour le moment dans le cas ou j'aurais besoin de poursuivre cette discussion.

    Merci encore au forum d'être si efficace et réactif !

  4. #4
    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
    ben c'est tout simple
    au lieu de récupérer la table toute entière tu récupère la première ligne après la balise tbody

    pour le nom tu la dans le div dans une balise h4 soit le premier enfant de ce div
    donc se sera ce div .children(0)
    mais dans ce h4 il y a plein de chose que tu veux pas alors tu split le texte
    pour les adresse et code postal je ne sais pas ou les trouver on les vois pas sur la page

    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
    Sub test()
        Dim Req, url
        url = "http://www.colissimo.fr/portail_colissimo/suivre.do?language=fr_FR"
        For Each cel In Range("A2", Cells(Rows.Count, 1).End(xlUp))
            Set Req = CreateObject("microsoft.xmlhttp")
            With Req
                .Open "POST", url, False
                .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
                .send "parcelnumber=" & cel.Text & "&language=fr_FR"
                With CreateObject("htmlfile")
                    .write Req.responseText
                    compte_rendu = .getElementsByTagName("Table")(2).getElementsByTagName("tbody")(0).getElementsByTagName("TR")(0).innerText
                    cel.Offset(0, 6) = compte_rendu    'le dernier statut
                    cel.Offset(0, 1) = Split(.getElementById("resultatSuivreDiv").Children(0).innerText, ":")(2)
                End With
            End With
        Next
    End Sub
    voili voilou wagadougou!!!!
    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

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 16
    Par défaut
    re-bonjour,

    Alors, j'ai pu adapter le code pour obtenir en G en H et en I les éléments liés au dernier statut en date du colis présent en colonne A. Je joins le fichier ainsi obtenu après exécution de la macro nommée test.

    Ce que je cherche à faire maintenant, c'est d'obtenir la date d'envoi du colis en colonne J, ce qui me permettrait d'obtenir rapidement le délai de livraison.

    En revanche, je ne sais quel élément du code html de la page utiliser pour arriver à mes fins. J'ai remarquer que le premier statut qui se situe donc le plus en bas dans la page web possède une balise intitulée "tr class="last" ; j'ai cherché à utiliser la procédure getelementsbyclassname sans succès. Je me suis aussi dit que je pouvais arriver à mes fins en cherchant la date correspondant au libellé "Votre colis a été déposé dans un point postal" qui correspond toujours au premier statut du colis, mais là encore je sèche.

    Je continue mes recherches mais si un contributeur de ce forum peut m'aiguiller, je lui en serais très reconnaissant.

    De nouveau, merci par avance des éventuelles réponses.
    Fichiers attachés Fichiers attachés

  6. #6
    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
    action reaction
    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
    Sub test()
        Dim Req, url
        url = "http://www.colissimo.fr/portail_colissimo/suivre.do?language=fr_FR"
        For Each cel In Range("A2", Cells(Rows.Count, 1).End(xlUp))
           On Error Resume Next
           Set Req = CreateObject("microsoft.xmlhttp")
            With Req
                .Open "POST", url, False
                .setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
                .send "parcelnumber=" & cel.Text & "&language=fr_FR"
                With CreateObject("htmlfile")
                    .write Req.responseText
                    Set compte_rendu = .getElementsByTagName("Table")(2).getElementsByTagName("TBODY")(0).getElementsByTagName("TR")(0) 'toute la ligne
                    cel.Offset(0, 1) = Split(.getElementById("resultatSuivreDiv").Children(0).innerText, ":")(2) 'LE NOM DE DESTINATION
                    cel.Offset(0, 6) = compte_rendu.Children(1).innerText   'le dernier statut
                    cel.Offset(0, 7) = compte_rendu.Children(0).innerText   'date de livraison ou dernier statut
                    cel.Offset(0, 8) = compte_rendu.Children(2).innerText   'lieu  livraison
                   'FIRST STATUT
                   INDEX_STATUT = .getElementsByTagName("Table")(2).getElementsByTagName("TR").Length - 1
                     'date de depart
                     cel.Offset(0, 9) = .getElementsByTagName("Table")(2).getElementsByTagName("TR")(INDEX_STATUT).Children(0).innerText
                      End With
            End With
        Err.Clear
        Next
    End Sub
    Nom : demoingto64 in-out.gif
Affichages : 609
Taille : 298,6 Ko
    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

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 16
    Par défaut
    Je ne sais pas quoi dire, quelle réactivité et en plus tout est bon du premier coup ! Je vais étudier le code pour tenter de le comprendre.

    Merci, merci et encore merci.

    Je marque la discussion en résolue, j'ai encore quelques ajustements à faire mais je pense pouvoir les gérer seul.

    Bonne fin de journée et peut-être à bientôt sur un autre thème

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

Discussions similaires

  1. [PPT-2003] Macro VBA chercher texte qui marche pas
    Par cactus666 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 20/05/2009, 16h52
  2. Réponses: 6
    Dernier message: 16/01/2009, 15h21
  3. Réponses: 2
    Dernier message: 30/06/2008, 09h27
  4. Macro pour une impression ne fonctionne pas
    Par aujero dans le forum Access
    Réponses: 2
    Dernier message: 01/06/2006, 17h23
  5. [VBA] Column(x) ne fonctionne pas
    Par menguygw dans le forum Access
    Réponses: 4
    Dernier message: 26/04/2006, 15h43

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