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

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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 ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    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
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    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 : 2318
Taille : 106,1 Ko

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

    J'ai essayé de retourver par le code sources :
    Nom : Livré 2.jpg
Affichages : 2217
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 379
    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 379
    Points : 12 075
    Points
    12 075
    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
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    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
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    tout d'abors il faut avoir un minimum de base de connaissance sur le langage HTML

    j'entends par la qui faut comprendre la structure des éléments et leur imbrications

    en ce qui concerne cette page par exemple ce que tu cherche est dans des cellules html(balise(TD) il sont donc dans une table(balise table)
    qui elle même est dans un TD qui lui est dans une autre table

    pour avoir un regard sur cette arborescence tu a l'inspecteur de document qui est livré si je ne me trompe pas avec tout explorateur on y accède par la touche F12

    dans celui de internet explorer par exemple il y une flèche en haut a gauche de la fenêtre de l'inspecteur
    en cliquant sur cette fleche puis en cliquant sur l'élément dans la page web cela nous ramène a sa position sur l'arborescence dans la fenêtre de l'inspecteur
    on peut des l'ors observer ces propriétés

    il est facile après de concevoir un code pour arriver a ce cheminement mais comme je l'ai dis il faut un minimum de connaissance sur le langage html

    qwazerty a pris la peine de nous faire un tutoriel sur la manipulation des élément html

    il faut bien l'assimiler une fois cela fait tu devrais mémé pouvoir te débrouiller tout seul pour faire ce genre de petite manipulation

    LE TUTORIEL DE QWAZERTY

    BONNE ROUTE
    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

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    Par défaut
    Bonjour et merci patricktoulon pour ton retour.

    Il est vrai je n'ai aucune connaissance en HTML.

    J'ai effectivement accès au "F12" de IE mais bon savoir dans quel table quelle ligne etc... c'est vrai que c'est compliqué
    Dans ton code j'ai essayer de modifier la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    situation = MESTABLES(2).getelementsbytagname("TR")(1).Children(x).innertext
    J'arrive à avoir les élément comme "Num colis" et "Refc" mais pour avoir par exmple la "Date de collecte", "Référence 1" etc ... un peu dur.

    Pour essayer de comprendre par exemple la date j'ai comme "chemin" :
    Nom : Chemin.jpg
Affichages : 2151
Taille : 33,7 Ko

    C'est quoi le code pour l'avoir ? Et comment tu arrive à le déterminer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_de_collecte= MESTABLES(X).getelementsbytagname("TR")(X).Children(X).innertext
    Existe t-il des soft pour avoir la table la colonne la ligne ?
    Un truc plus simple ?

    Merci pour tes éclaircissement
    Images attachées Images attachées  

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

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

    J'ai tenté par une boucle (For ...) de collecter le n° des tables, Colonnes et Ligne.

    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
    45
    46
    Sub Table()
        Columns("A:B").ClearContents
        Track = "7090587392"
     
        URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS=" & Track
     
    With IE
    Set IE = CreateObject("internetexplorer.application")
        .Visible = False
        .navigate URL
        Do: DoEvents: Loop While .readyState <> 4 Or .Busy
        Set MESTABLES = .document.getElementsByTagName("TABLE") ' on collectionne les tables
     
    vT = 0
    vc = 0
    vL = 0
    On Error Resume Next
        For T = 0 To 5
        On Error GoTo Table
                If vL = 1 Then Exit For
            For c = 0 To 5
            On Error GoTo Colonne
            If vc = 1 Then Exit For
                For L = 0 To 5
                On Error GoTo Ligne
        If vT = 1 Then Exit For
     
     
                Arbo = MESTABLES(T).getElementsByTagName("TR")(c).Children(L).innerText
                Range("A1048572").End(xlUp).Offset(1, 0).Value = Arbo
                Range("B1048572").End(xlUp).Offset(1, 0).Value = "Table : " & T & " Colonne :" & c & " Ligne :" & L
     
     
                Next L
            Next c
        Next T
        .Quit
        MsgBox "Fini"
        Set IE = Nothing
        Set IEDoc = Nothing
    End With
    Exit Sub
    Table: vT = 1: Resume Next
    Colonne: vc = 1: Resume Next
    Ligne: vL = 1: Resume Next
    End Sub

    Pour avoir le n° correspondant mais je n'y arrive pas. Car il faut gérer les erreurs et cela ma bloque et quand cela continue je ne retombe pas sur celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    situation = MESTABLES(2).getElementsByTagName("TR")(1).Children(2).innerText
    Soit retomber sur : Table : 2 Colonne :1 Ligne :2

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    J'ai commenté le code
    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
    Sub Table()
        Columns("A:B").ClearContents
        Track = "7090587392"
     
        URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS=" & Track
     
    Set IE = CreateObject("internetexplorer.application")
    With IE
        .Visible = True 'False durant les phases de teste autant garder la session d'IE visible
        .Navigate URL
        Do: DoEvents: Loop While .ReadyState <> 4 Or .Busy
        Set MESTABLES = .document.getElementsByName("resultat") ' on pointe la Form contenant toutes les tables
     'Dans MesTables...item 1...all, tu as 4 Input (de Item1 à Item 4 qui correspondent à Num_Colis, Time_Colis, trans et action
     'Puis les tables contenant les données
     Set UneTable = MESTABLES(0).all(4) '0 parce que Item1 et 4 parce que Item5, les items sont exprimé en base 1 dans l'explorateur et en base 0 dans le code
     'Dans UneTable tu as:
     'TableSection, TableRow et TableCell c'est un tableau
     'Ce tableau contient un nouveau tableau qui lui même contient 12 lignes
     'Pointons ce tableau
     Set UneTable = UneTable.all(3)
     'Dans la propriété Rows de ce tableau tu as les 12 lignes qui correspondent aux infos
     'Expédition n°, Date de collecte,... avec entre chaque une ligne vide
     'Donc la ligne contient le tableau avec les entêtes et les info que tu cherches
     Set MesInfo = UneTable.Rows(10)
     'On se décale de deux élements pour pointer sur le tableau qui t'intéresse
     Set MesInfo = MesInfo.all(1) 'On pointe maintenant l'élément Table qui contient deux Rows = les entêtes et les données
     'On pointe la ligne avec les données
     Set MesInfo = MesInfo.Rows(1)
     NumColis = MesInfo.Cells(0).innerText
    End With
    A toi de créer des boucles pour passer d'un tableau à l'autre et peut-être vérifier qu'il n'y a bien qu'une seule ligne de données dans chaque tableau.
    Le code que j'ai produit et à n'en pas douter très perfectible, il est juste la pour t'indiquer la marche à suivre pour trouver tes données.
    Je te conseille de relire le tutoriel que j'ai fait sur le sujet, en déclarant tes variables à la volée, en utilisant le late binding, tu ne mets vraiment pas toutes les chances de ton coté il me semble. Il y a aussi une section sur les tableaux justement, sur les notion de Base 0 et Base 1.

    Bonne soirée
    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

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut
    teste ca dans un fichier vierge
    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 Table()
        With Columns("A:g"): .Clear: .AutoFit: End With
        Track = "7090587392"
        URL = "https://apps.france.fedex.com/te/webapp25?&trans=tesow350&action=recherche_complete&NUM_COLIS=" & Track
        With IE
            Set IE = CreateObject("internetexplorer.application")
            .Visible = False
            .navigate URL
            Do: DoEvents: Loop While .readyState <> 4 Or .Busy
            Set mestables = .document.getElementsByTagName("TABLE")    ' on collectionne les tables
            For i = 0 To mestables.Length - 1
                If mestables(i).parentelement.tagname = "TD" Then code = code & mestables(i).outerhtml & "<br>"
            Next
            .Quit
        End With
        With CreateObject("htmlfile")
            If .parentWindow.clipboardData.setData("Text", code) Then
                Application.ScreenUpdating = False
                With Sheets(1)
                    .Activate
                    .Cells(Rows.Count, 1).End(xlUp).Offset(2, 0).Select
                    .Paste
                End With
                .parentWindow.clipboardData.clearData "Text"
            End If
        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

  12. #12
    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 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, …
    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)

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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

  14. #14
    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
    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
    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)

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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

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




    Ligne de code n°21 : mieux vaut utiliser la variable pour le n° de colis …
    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)

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

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

    Je n'ai pas eu le temps de regarder depuis le temps dsl.

    J'ai testé tout vos codes ils fonctionnent. Le seule petit problème c'est qu'il ne fonctionne pas si j'ai un autre n° de suivi autre car vous vous êtes basé sur le "Num colis" alors que je recherche le tracking par la "Référence 1 :". De plus le code fonctionne que sur le site de FedEx. Et patricktoulon m'avais déjà fait le code pour le site FedEx et Chrono-post.

    En gros je souhaite avoir une arborescence compète de n'importe quel site.
    Et comme cela je pourrais taper alors sur la table / sous table / sous-sous table etc... avec le code qu'avait fait patricktoulon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MESTABLES(x).getElementsByTagName("TR")(x).Children(x).innerText
    Arrrrf je ne sais pas si je bien clair.

    pour remonter les infos ce n''est pas sous forme de tableau, mais plus sous forme d'arborescence en indiquant le n° de table, sous-table etc... Comme l'espion un peu. Et ça sur n'importe quel site comme cela je pourrais connaître les infos à remonter sur les site des transporteurs que je dois faire.

    Et tout merci à vous

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

    Déjà manuellement sur le site effectuer une recherche sur le critère voulu et, si tant est qu'il existe,
    alors via l'outil d'inspection intégré au navigateur visualiser la requête pour modifier en conséquence le code VBA …

    Pour rappel, une requête n'est pas universelle, elle est spécifique à sa page Web !

    Utilisation des outils de développement F12

    Analyse du trafic réseau de votre page Web
    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)

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