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ération de prix d'articles sur internet


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut Récupération de prix d'articles sur internet
    Bonjour et merci à tous pour l'aide que vous apportez sur ce forum chaque jour.

    Je souhaiterais savoir s'il est possible de récupérer des prix de produits sur internet.
    Je dois récupérer manuellement des prix de produits listés dans un tableau excel, sur un site internet au jour le jour et, je voudrais savoir s'il est possible d'automatiser cette tâche qui prend bien trop de temps.

    Est-il possible de le faire via une macro (ou éventuellement via un autre langage) ?
    Et si oui, pourriez vous m'aider à ce sujet ?

    Merci par avance.

    Bien Cordialement.

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



    Bonjour,

    tout dépend de la page Web …

    Le plus simple est de commencer par tester avec une QueryTable (Nouvelle requête sur le net, consulter l'aide).
    Sinon voir du côté de la Manipulation d'Internet Explorer via VBA et son tutoriel
    comme les exemples dans les discussions de ce forum …
    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)

  3. #3
    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 heu.....
    Bonjour
    si le site ou la page n'est pas confidentiel pourrais tu donner un lien ???
    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

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,

    Merci pour vos réponses et merci de l'intérêt que vous portez à ma demande.

    Marc-L, je ne sais pas ce qu'est une QueryTable, donc je vais regarder. Merci pour le lien.

    Patricktoulon, je souhaiterais récupérer le prix de certains produits sur le site de Carrefour : http://www.carrefour.fr/
    Simplement étant donné la pluralité de prix que j'ai a récupérer, je préfèrerais que cela se fasse automatiquement.

    Merci encore de votre aide.

    Bien Cordialement.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Le tutoriel de Qwazerty est juste génial. Merci Qwazerty.
    Et une fois de plus merci à toi Marc-L pour le lien.
    Du coup navrée de ne pas avoir commencé par là.

    Voici le code de Qwazerty relatif à la récupération d'un texte sur une 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub RecupTextImpots()
    'Récupère un texte brut contenu dans une page Web
     
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim HtmlElementStandard As HTMLGenericElement
    Dim LeTexteExtrait As String
     
       'Chargement d'une page Web
       IE.Navigate "http://www.impots.gouv.fr/"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le document
       Set IEDoc = IE.document
     
       'Allons chercher ce texte dans notre Item46
       Set HtmlElementStandard = IEDoc.body.all(45)
     
       'On le place dans notre variable prévue à cet effet
       LeTexteExtrait = HtmlElementStandard.innerText
     
       'On affiche le texte
       MsgBox LeTexteExtrait, Title:="Le texte extrait de la page"
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub
    J'ai suivi le tutoriel du début donc j'ai fait le lien entre Excel et Internet. J'ai ouvert ma page et découvert le code source etc...
    Tout allais bien jusqu'ici.
    Mais je suis bloqué sur un point primordial : je ne parvient pas à retrouver dans mon espion l'item correspondant à ma recherche.
    Le sien était le 46 mais je ne comprends pas comment on le retrouve.

    Dois-je ouvrir chaque item dans (Espion-> Document -> All -> item 1-256) pour y parvenir ?
    Le pire c'est que je les ai tous ouverts mais je n'ai pas trouvé la classe que je cherche.

    Voici le lien : http://www.ooshop.com/courses-en-lig...UD_IDFO=139766

    Et en pièce jointe, une capture avec une capture d'écran du code source et de code source ; le "price " 2.29 que je cherche à récupérer est en jaune.

    Merci par avance de vos réponses.
    Bien Cordialement.
    Images attachées Images attachées  

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


    Pointer déjà sur l'élément parent disposant d'un ID …

    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 DemoIE()
      Const URL$ = "http://www.ooshop.com/courses-en-ligne/ContentNavigation.aspx?NOEUD_IDFO=139766"
     
        With CreateObject("InternetExplorer.Application")
            .Navigate URL
            While .Busy Or .ReadyState < 4:  DoEvents:  Wend
     
            With .Document.all.ctl00_cphC_pn3T1_ctl01_divContentPromNouv
                T$ = .all(1).alt & vbLf & vbLf & "Prix :  " & .all(2).innerText
            End With
     
            .Quit
        End With
     
        MsgBox T, vbInformation, "          ooshop"
    End Sub
    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)

  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

    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
    Sub test1()
    Dim IE, IEdoc
    Set IE = CreateObject("internetexplorer.application")
    IE.Visible = False
    IE.navigate "http://www.ooshop.com/courses-en-ligne/ContentNavigation.aspx?NOEUD_IDFO=139766"
    Do: DoEvents: Loop Until IE.readystate = 4
    Set element = IE.document.getelementsbyclassname("block TmarginSm layerLot")
    'MsgBox Replace(element(0).innertext, vbCrLf, "*")
    texte = "titre du produit:" & vbCrLf
    texte = texte & element(0).Children(0).Children(0).Children(0).innertext & vbCrLf 'ici c'est le titre 
    texte = texte & "prix du produit:" & vbCrLf
    texte = texte & IE.document.getelementsbyclassname("price")(0).innertext & vbCrLf 'ici c'est le prix 
    'information produit le div avec la classe "Bmargin" contient les info complementaitres
    'il y a plusieurs enfants de cet element chacun contient les elements d'information du produit par theme
    Set infoprod = IE.document.getelementsbyclassname("Bmargin")(0)
    'le premier enfant contient la table des valeurs calorifique 
    MsgBox texte & vbCrLf & infoprod.Children(1).innertext
    IE.Quit
    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

  8. #8
    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 !

    Pour le titre complet, pour le coup j'utiliserais directement la classe :

    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 Demo2IEooshop()
      Const URL$ = "http://www.ooshop.com/courses-en-ligne/ContentNavigation.aspx?NOEUD_IDFO=139766"
     
        With CreateObject("InternetExplorer.Application")
            .Navigate URL
            While .Busy Or .ReadyState < 4:  DoEvents:  Wend
     
            With .Document
                T$ = .getElementsByClassName("BmarginSm")(0).innerText & vbLf & vbLf & _
                     .getElementsByClassName("price")(0).innerText
            End With
     
            .Quit
        End With
     
        MsgBox T, , "   " & Split(URL, "/")(2)
    End Sub
    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)

  9. #9
    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 rre
    salut Marc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With .Document
                T$ = .getElementsByClassName("BmarginSm")(0).innerText & vbLf & vbLf & _
                     .getElementsByClassName("price")(0).innerText
            End With
    IE 9 et IE 10?????

    chez moi quand l'élément n'est pas le fils direct du document mais le fils d'un autre élément très souvent le getclassname ne fonctionne pas avec IE 10 sur W7 64

    on en avait déjà parler il me semble

    d'où le fait que je préfère utiliser le getclassname sur le fils du document puis children(X) ou childnodes (X)

    je n'est pas fait le test pour voir si cette erreur avait été corrigée j'avais envoyé un rapport d'erreur a Microsoft sur ce sujet
    je n'ai jamais eu de réponse
    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

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




    Je l'ai testé uniquement et avec succès sur IE9 & W7 x64 ! (comme d'hab, mais dis moi si tu as besoin que je vérifie sur IE10)

    Sinon je préfère cibler un ID parent comme dans mon premier code au lieu d'une classe …
    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)

  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
    Re

    oui teste sur IE 10 je veux bien

    oui la aussi quand on veut un élément bien précis si il y a un ID vaut mieux aussi l'utiliser je suis d'accords avec ca
    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





    Patrick, test sur IE10 & W8 de mon deuxième code (post #9) sans souci, tutto va bene !


    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
    re Bonjour Marc

    oui je sais sur W8et IE10 ca fonctionne mais pas avec seven 64 et IE10
    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
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Tout d'abord merci de l’intérêt et du temps que vous avez consacré à mon problème.

    Marc L ce code marche à la perfection.
    Merci merci merci !!!!

    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 DemoIE()
      Const URL$ = "http://www.ooshop.com/courses-en-ligne/ContentNavigation.aspx?NOEUD_IDFO=139766"
     
        With CreateObject("InternetExplorer.Application")
            .navigate URL
            While .Busy Or .readyState < 4:  DoEvents:  Wend
     
            With .document.all.ctl00_cphC_pn3T1_ctl01_divContentPromNouv
                T$ = .all(1).alt & vbLf & vbLf & "Prix :  " & .all(2).innerText
            End With
     
            .Quit
        End With
     
        MsgBox T, vbInformation, "          ooshop"
    End Sub
    Te serait-il possible de commenter ton code afin que je comprenne le procédé s'il te plait ?
    C'est cette partie là qui me pose soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     While .Busy Or .readyState < 4:  DoEvents:  Wend
     
            With .document.all.ctl00_cphC_pn3T1_ctl01_divContentPromNouv
                T$ = .all(1).alt & vbLf & vbLf & "Prix :  " & .all(2).innerText
            End With
    J'aimerais vraiment comprendre comment tu as fait s'il te plaît ; pour apprendre et pouvoir le reproduire à l'avenir.

    De nouveau merci merci merci c'est juste génial.

    Bonjour patricktoulon

    Et un grand merci pour ton implication et ton aide.

    J'ai un petit soucis lorsque je lance ton code.

    Excel me retourne une erreur sur la méthode getelementsbyclassname je pense : l'Objet ne supporte pas cette propriété ou méthode.

    Ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set element = IE.document.getelementsbyclassname("block TmarginSm layerLot")
    et de la même manière ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T$ = .getelementsbyclassname("BmarginSm")(0).innerText & vbLf & vbLf & _
                     .getelementsbyclassname("price")(0).innerText
    Merci par avance de vos éclaircissements.

    Bien Cordialement.

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


    Quelle est la version de ton Internet Explorer et celle de Windows ?
    Mon second code (post #8 maintenant) fonctionne-t-il de ton côté ?


    Citation Envoyé par hortencia Voir le message
    Te serait-il possible de commenter ton code afin que je comprenne le procédé s'il te plait ?
    C'est cette partie là qui me pose soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     While .Busy Or .readyState < 4:  DoEvents:  Wend
     
            With .document.all.ctl00_cphC_pn3T1_ctl01_divContentPromNouv
                T$ = .all(1).alt & vbLf & vbLf & "Prix :  " & .all(2).innerText
            End With
    • Ligne n°1 : correspond au WaitIE du tutoriel, la boucle d'attente de chargement de la page …

    • Ligne n°3 : pointer l'élément disposant d'un identifiant (ID) trouvé via l'outil d'inspection de tout navigateur Web
    (via la touche F12, voir l'aide du navigateur); équivalent à getElementByID du tutoriel …

    • Ligne n°4 : .all est une collection de l'élément pointé par la ligne précédente.
    L'astuce est de créer une variable pointant sur cet élément puis de placer un point d'arrêt dans le code
    après sa création afin d'explorer son contenu dans la fenêtre des Variables locales
    A noter le premier Item d'une collection a pour indice le zéro. (.all(1) correspond au deuxième élément …)

    _________________________________________________________________________________________________

    L'effort fait les forts …
    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)

  16. #16
    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
    Bonjour hortencia
    je parierais ma chemise que l'erreur a le même code que moi
    c'est ce dont on parle avec Marc selon le system d'exploitation avec ie 9 ou ie 10 sa version ou la mienne donne une erreur

    Microsoft m'a envoyé la réponse me précisant en gros que la librairie la plus fiable était celle en 64 bit pour un system en 64 bit

    manque de peau moi j'ai office 32 bits et donc utilisation de la dll 32 bits .donc je suis amené a bidouiller

    le problème n'est pas de savoir qui a tord ou raison mais c'est de trouver un code qui marche avec toute les version Windows et IE

    si tu regarde un peu le tutoriel de qwazerty on y trouve une fonction qu'il a faite "getclassname" pourtant cette fonction existe dans la librairie IE
    mais selon la version avec le system d'exploitation ca bug

    c'est ce je j'essaie de faire voir a marc depuis pas mal de temps déjà

    Citation Envoyé par hortencia Voir le message
    Bonjour patricktoulon

    Et un grand merci pour ton implication et ton aide.

    J'ai un petit soucis lorsque je lance ton code.

    Excel me retourne une erreur sur la méthode getelementsbyclassname je pense : l'Objet ne supporte pas cette propriété ou méthode.
    d'où ma réflexion dans ce cas la utiliser une requête qui elle ne fait de distinction en 64 et 32 bits

    Ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set element = IE.document.getelementsbyclassname("block TmarginSm layerLot")
    et de la même manière ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T$ = .getelementsbyclassname("BmarginSm")(0).innerText & vbLf & vbLf & _
                     .getelementsbyclassname("price")(0).innerText
    Merci par avance de vos éclaircissements.

    Bien Cordialement.
    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

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


    Patrick,
    n'ayant pas d'ordinateur disposant d'IE10 sous Seven et utilisant comme navigateur Firefox
    car les mises à jour d'IE me mettant parfois le boxon dans Seven …


    hortencia,
    contrairement au tutoriel, les codes proposés par Patrick et moi n'ont pas besoin d'activer de référence
    car ils utilisent une liaison tardive, voir le tutoriel Les fiches VBA - Comprendre : Early ou Late Binding

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    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)

  18. #18
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Merci vraiment pour votre aide, vous êtes tout simplement géniaux.

    Ma version est la W7 64bits comme Marc-L.
    Merci à toi ainsi qu'à Patricktoulon pour vos explications.

    Ça fonctionne à la perfection et je commence même à comprendre le fonctionnement et à "m'amuser" un peu.

    Néanmoins il y a un point sur lequel je flanche toujours : tant qu'il existe un id ou une className unique je la pointe avec le IE.Document.all("Name").
    Mais lorsque le nom, l'id ou la classe n'est pas unique je ne parviens plus à rien.

    Je donne un exemple, le code source se trouvant en pièce jointe.
    Comment pointer sur cet inputRadio et ce prix encadrés en rouge sachant qu'il n'ont pas d'attributs uniques?

    J'ai tenté et j'aimerais vraiment comprendre le .all(num1).all(num2) ou .all(num1).children(num2) mais chaque fois que je crois avoir compris comment décompter via les arborescence du code source et bien ce n'est pas correct.
    J'essaye alors au "piffomètre" mais je n'aime pas cela j'aimerais comprendre et pouvoir être précise.

    Quelqu'un saurait-il m'expliquer comment est ce que ça marche ?

    Et bien évidemment encore un grand merci à Qwazerty, Marc-L et PatrickToulon grâce à qui je commence à comprendre les interactions internet VBA.

    Et merci à tous pour votre aide.
    Fichiers attachés Fichiers attachés

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



    hortencia, quid de la version d'Internet Explorer ?

    Je pourrais tenter de voir avec l'adresse de la page en question accompagnée d'une présentation exhaustive du besoin.

    Sinon comme indiqué dans le post #16,
    all(1) dans le code correspond à l'Item 2 de la collection all dans la fenêtre des Variables locales
    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)

  20. #20
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 130
    Points : 65
    Points
    65
    Par défaut
    J’ai souhaité m’entraîner sur l’exemple du billet de train de Quazerty, sur le site : http://www.voyages-sncf.com/billet-train
    J’ai entré une recherche quelconque : Billet Lille / Marseille.
    En pièce joint ; les résultats de ma recherche.
    Je tentais de récupérer le montant (ici = 140) de cocher le boutonRadio correspondant et d’appuyer sur recherche.
    Quazerty explique très bien cela dans son tuto.
    Malheureusement les className et id de ces éléments ne sont pas spécifiques.

    Et concernant les items, je te donne un exemple représentatif de mon blocage :

    L’horaire 15h54 se trouve dans le div « block-bestpricesummary» que l’on peut atteindre en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     IE.document.all(« block-bestpricesummary »)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .all(12).Children(0).all(1).innerText
    me permet d’atteindre cette horaire.
    Néanmoins je n’ai pas compris le mécanisme permettant de déterminer les items 12, 0 et 1 puisque lorsque je compte sur l’arborescence cela ne correspond pas.
    Je les ai déterminés en testant. Et même après test rien ne correspond à mon décompte.

    Merci pour ton aide Marc-L.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Récupération de variables sur internet (fichier.txt)
    Par chicotore dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 18/03/2011, 13h18
  2. Récupération fichier sur Internet
    Par Webby1234 dans le forum Général Java
    Réponses: 5
    Dernier message: 29/01/2010, 13h44
  3. [XL-2007] Récupération de valeur sur internet
    Par Eric_03 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/01/2010, 15h22
  4. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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