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 :

Récupérer des informations d'internet par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut Récupérer des informations d'internet par VBA
    Bonjour,

    J'ai beau essayer de trouver ma balise sur lequel je veux extraire mes données mais je n'y arrive pas
    Le site est : https://france.fedex.com/te/webapp25...LIS=7090592607
    C'est pour extraire la valeur contenant le statut de la livraison.
    Mais je n'y arrive pas.

    Je sais qu'avec ce bout de code trouvé cela fonctionne pour Google :

    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
    '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 = False
     
       '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
       MsgBox InputGoogleZoneTexte.Value
     
       IE.Quit
       Set IE = Nothing
       Set IEDoc = Nothing
    Mais pour l'autre site impossible.

    Merci de votre aide. Cdt

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas ouvert ton site mais es-tu que ta données soit dans du HTML et pas dans... autre chose comme du Flash par exemple ?

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    En fait pour trouver l'élément en question le mieux, une fois dans l'inspecteur, est de faire une recherche sur le mot "Situation". Comme ça ça va t'emmener directement sur le bon élément. Il te faudra ensuite remonter un peu l'arborescence pour trouver un élément ayant un name ou un ID (je pense <div id="colD2">). Par contre attention, il y a un élément "Form" en dessous... ça risque de te poser des problèmes, tu verras.
    Après les données sont dans des tableaux imbriqué les uns dans les autres, en utilisant le tuto et en bidouillant un peu tu devrais pouvoir sortir ces données.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut
    J'ai suivi la procédure de l'espion tenter de retrouver l'information que j'ai besoin :
    Nom : Livré 3.jpg
Affichages : 2526
Taille : 106,1 Ko

    Je voudrai retrouvé la balise qui mentionne le statut de livraison :
    Nom : Livré.jpg
Affichages : 2466
Taille : 62,2 Ko

    J'ai essayé de retourver par le code sources :
    Nom : Livré 2.jpg
Affichages : 2415
Taille : 37,7 Ko

    J'ai d'autre site sur lequel je dois effectuer une macro. Qwazerty tu pense que tu aurais un petit peu de temps pour me montrer sur le site Fedex pour récupérer cette info ?
    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 PremierIE()
    'Déclaration des variables
    Dim IE As InternetExplorer
     
       Set IE = CreateObject("InternetExplorer.Application")
       IE.Navigate "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS=7090682899"
       IE.Visible = True
       Set IE = 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
    En te remerciant beaucoup Cdt.

  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
    quand on regarde l'arborescence de la structure de la page on se rend compte que le "TD" de la situation est dans une sous table

    il te faut donc descenderie l'arborescence

    au plus simple
    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
    Sub test()
        Dim IE, URL, TR, MESTABLES
        URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS=7090682899"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4 Or .busy
            Set MESTABLES = .document.getelementsbytagname("TABLE")' on collectionne les tables
            'msgbox pour la situation
           ' la situation se trouve dans la 2d ligne de la 3eme  sous table
    situation = MESTABLES(2).getelementsbytagname("TR")(1).Children(2).innertext
            .Quit
            MsgBox situation
        End With
    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
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut
    Bonjour patricktoulon,

    Merci de m'avoir donner la solution direct Super

    Mais pourrais-tu me montrer en quelques étapes comment tu as fait pour connaitre la position exacte ?
    Si tu as utiliser un/plusieurs logiciel(s) etc... Car avec l'espion c'est un peu compliqué !! Car on ne peux pas faire de recherche.

    Cela fonctionne pour tous les n° de suivi Fedex excellent et un merci à toi.
    Mais je souhaiterai également le faire sur plusieurs site de transporteur et je voudrait comprendre le cheminement
    J'ai pas site j'ai Chronopost, Colissimo, TNT et UPS pour les principaux.

    Bien Cdt

  7. #7
    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
    Citation Envoyé par GuiJenn34 Voir le message
    J'ai beau essayer de trouver ma balise sur lequel je veux extraire mes données mais je n'y arrive pas.
    Bonjour,

    pourtant ce n'est vraiment pas compliqué quand les données se trouvent directement dans le code source de la page Web
    comme c'est le cas ici !     Une fois ce code récupéré, juste avec les fonctions VBA de chaîne de caractères :

    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
    Sub Demo1()
        Const TIT = "   Situation du colis n° ", TD = "<td>", _
              URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS="
              NC$ = "8147813377"
        With CreateObject("WinHttp.WinHttpRequest.5.1")
            .Open "GET", URL & NC, False
            .setRequestHeader "DNT", "1"
             On Error Resume Next
            .send
             If Err.Number Then Beep: Exit Sub
             On Error GoTo 0
         If .Status <> 200 Then Beep: Exit Sub
             SP = Split(.responseText, TD & NC)
        End With
        If UBound(SP) < 1 Then
            MsgBox "non référencé …", , TIT & NC
        Else
            SP = Split(SP(1), TD)
            If UBound(SP) = 2 Then MsgBox Application.Trim(Split(SP(2), "</td>")(0)), , TIT & NC _
                              Else MsgBox "Structure des données à vérifier …", , TIT & NC
        End If
    End Sub
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

    ___________________________________________________________________________________________________________
    Je suis Paris, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  8. #8
    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
    Salut Marc
    on peut faire aussi l'exploration avec les librairie IE dans un htmldocument en mémoire en récupérant le TD .innertext

    certainement plus sur dans le sens ou il peut y avoir des erreurs avec split si le code innerhtml du td change(style,attribut,etc...) tandis que le intertexte lui non (il est ce qu'il est)
    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

  9. #9
    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
    Salut Patrick !

    Du même avis, respect de la règle TBTO, l'objet il n'y a que cela de vrai !

    Mais j'ai aussi pris le parti de me placer au niveau du demandeur qui,
    avec un peu d'expérience, pourra se débrouiller au moins avec la base du VBA …

    Au passage ton code double les résultats !
    Moi je préfère afficher uniquement le statut du colis attendu tout en gérant une éventuelle erreur du Split

  10. #10
    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
    salut marc
    https://apps.france.fedex.com/te/web...LIS=8147813377
    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
     
    Sub Demo1()
       Dim mestd
       Const TIT = "   Situation du colis n° ", TD = "<td>", _
              URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS="
        nc$ = "8147813377"
        With CreateObject("WinHttp.WinHttpRequest.5.1")
            .Open "GET", URL & nc, False
            .setRequestHeader "DNT", "1"
            On Error Resume Next
            .send
            If Err.Number Then Beep: Exit Sub
            On Error GoTo 0
            If .Status <> 200 Then Beep: Exit Sub
            code = .responsetext
           End With
        With CreateObject("htmlfile")
            .body.innerhtml = code
            Set mestd = .getelementsbytagname("TD")
            For i = 0 To mestd.Length - 1
                If Trim(mestd(i).innertext) = "8147813377" Then
                    reponse = reponse & TIT & nc & ":" & vbCrLf & mestd(i).parentelement.Children(2).innertext & vbCrLf
                End If
            Next
        End With
        MsgBox reponse
    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

  11. #11
    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




    Ligne de code n°21 : mieux vaut utiliser la variable pour le n° de colis …

Discussions similaires

  1. Récupérer des informations dans une ListView (par exemple un ID)
    Par Berlo56 dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 06/06/2014, 08h46
  2. [Toutes versions] Récupérer des informations dans un document word par vba à partir d'un signet
    Par sellig60 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/09/2013, 20h32
  3. Récupérer des informations par XML
    Par cdoctora dans le forum Langage
    Réponses: 2
    Dernier message: 14/11/2008, 15h59
  4. récupérer des informations par un JDialog
    Par Nicool dans le forum Langage
    Réponses: 3
    Dernier message: 13/11/2007, 09h57
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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