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 données Internet [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut Récupérer des données Internet
    Bonjour,
    je souhaite récupérer une donnée qui existe sur plusieurs pages d'un même site Internet,
    exemple des pages:
    http://cbonds.com/emissions/issue/45650
    http://cbonds.com/emissions/issue/45646
    http://cbonds.com/emissions/issue/45648
    http://cbonds.com/emissions/issue/45754
    etc
    ces différents liens des pages sont stockées dans des cellules excel (A1:A9000)
    y'a 9000 liens

    j'aurai besoin de récupérer la date correspondant à "end of placement"

    je cherche un prog qui pourrai automatiser tout ça, merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Bonjour,
    essaye ça
    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
    Public htmlDoc As MSHTML.HTMLDocument
    Public IE As New SHDocVw.InternetExplorer
     
    Sub JamesBonds()
    'si les liens sont sur la premiere colonnes de la feuille actives
    derli = Cells(65000, 1).End(xlUp).Row
     
        For i = 1 To derli
        navurl = Cells(i, 1)
     
            IE.navigate navurl
     
            Do While IE.readyState <> READYSTATE_COMPLETE
                DoEvents
            Loop
        'ici mettre true pour afficher internet explorer
    IE.Visible = False
     
     
        Set htmlDoc = IE.document
     
    TBL = htmlDoc.getElementsByTagName("table")
    itm = TBL.all.Length
     
            For j = 1 To itm
            endofplac = TBL.all.Item(j).innerText
     
                If endofplac = "End of placement" Then
                    dt = TBL.all.Item(j + 1).innerText
                    Cells(i, 2) = endofplac
                    Cells(i, 3) = dt
     
                    Exit For
     
                End If
            Next j
        Next i
    End Sub
    cordialement

  3. #3
    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 674
    Points
    18 674
    Par défaut

    Bonjour,

    sans présentation claire & exhaustive …

    Réalisable avec un classeur .xls de liens en pièce jointe
    mais sans savoir que faire de la date récupérée
    ni s'il faut la conserver au format anglo-saxon ou la convertir au format européen, etc …

  4. #4
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Merci Bcp, mais il y'a un message qui s'affiche "erreur de compilation, type défini par l'utilisateur non défini" concernant la première ligne (Public htmlDoc As MSHTML.HTMLDocument)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Pour manipuler IE, il nous faudra activer deux références : « Microsoft Internet Controls » et « Microsoft HTML Object Library ». Pour accéder aux références dans VBA, menu Outils -> Références.

    http://qwazerty.developpez.com/tutor...-et-vba-excel/

  6. #6
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    C'est fait, maintenant il affiche autre chose "Variable objet ou variable de bloc With non définie"

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Je te donne un fichier qui fonctionne chez moi
    Fichiers attachés Fichiers attachés

  8. #8
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Merci Merci ça marche super bien et en plus les dates sont dans le bon sens (DD/MM/YYYY) Merciiiiiiiiii
    encore une dernière petite chose stp, ça ne fonctionne plus quand je mets MES liens dans ton fichier, voici mon fichier avec les liens
    Fichiers attachés Fichiers attachés

  9. #9
    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 674
    Points
    18 674
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    […]
    mais sans savoir que faire de la date récupérée
    Il y a aussi des cellules en bleu souligné mais sans lien hypertexte dans le fichier joint;
    cela ne pose pas de problème, juste qu'il n'y aura pas de date associée …

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Il faut changer la ligne 9 par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    navurl = Cells(i, 1).Hyperlinks(1).Address

  11. #11
    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 674
    Points
    18 674
    Par défaut

    Mon approche est quelque peu différente, tant sur la récupération des liens que sur les dates,
    certainement plus rapide mais je vais manquer de temps, à suivre plus tard dans la soirée ou demain …

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    un petit bonus
    ce code inscrit dans la colonne 5 la véritable adresse du lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub lien()
    derli = Cells(65000, 1).End(xlUp).Row
       On Error Resume Next
        For i = 1 To derli
        navurl = Cells(i, 1).Hyperlinks(1).Address
        Cells(i, 5) = navurl
        Next i
    End Sub

  13. #13
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par spookyz Voir le message
    Il faut changer la ligne 9 navurl = Cells(i, 1)

    par

    navurl = Cells(i, 1).Hyperlinks(1).Address
    Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp ) ca marche

    Citation Envoyé par Marc-L Voir le message
    Mon approche est quelque peu différente, tant sur la récupération des liens que sur les dates,
    certainement plus rapide mais je vais manquer de temps, à suivre plus tard dans la soirée ou demain …
    Merci Bcp, on a trouvé la solution

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Il serait intéressant de laisser Marc_L proposer
    une autre solution plus performante pour toi, pour moi et pour les autres
    ensuite tu pourras mettre RÉSOLU sur ton post
    cordialement

  15. #15
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Mon approche est quelque peu différente, tant sur la récupération des liens que sur les dates,
    certainement plus rapide mais je vais manquer de temps, à suivre plus tard dans la soirée ou demain …
    Merci Bcp MARC, ça serait bien d'avoir une autre approche

    Ca marche bien, mais parfois y'a des liens qui ne s'ouvrent pas rapidement donc ça bug, on peut pas rajouter une condition, si le lien ne s'ouvre pas, il passe au suivant?

  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 674
    Points
    18 674
    Par défaut
    Une adresse de cellule pour un tel lien ? De toute manière, les liens, c'est lent …


    Sinon voici une autre approche (sans référence à activer), voir la procédure Demo :
    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
    Private Declare Function InternetCheckConnectionA Lib "Wininet" (ByVal SITE$, ByVal one&, _
                                                                     ByVal zero&) As Boolean
     
    Function WebOK(Optional ByVal URL$ = "http://www.msn.com") As Boolean
                P& = InStr(9, URL, "/"):  If P Then URL = Left$(URL, P)
             WebOK = InternetCheckConnectionA(URL, 1, 0)
    End Function
     
     
    Sub Demo()
        Dim Hlk As Hyperlink
     
        With Feuil1
            If WebOK(.Hyperlinks(1).Address) = False Then Beep: Exit Sub
            ReDim DT(1 To .UsedRange.Rows.Count, 1 To 1)
     
            For Each Hlk In .Hyperlinks
                With CreateObject("MSXML2.XMLHTTP")
                    .Open "POST", Hlk.Address, False
                    .Send
     
                    If .Status = 200 Then
                        T$ = .responseText
                        P& = InStr(T, "End of placement</td><td>")
     
                        If P Then
                            T = Mid$(T, P + 25, 10)
                            If IsDate(T) Then DT(Hlk.Parent.Row, 1) = T
                        End If
                    End If
                End With
     
                DoEvents
            Next
     
            .[E1].Resize(UBound(DT)) = DT
            Beep
        End With
    End Sub
    J'ai allégé au maximum mes procédures habituelles pour grapiller du temps …

    Les dates stockées dans une variable tableau sont inscrites en colonne en une fois à la fin de la procédure (ligne n°36);
    mais en insistant sur la touche Echap, grâce à la ligne n°33, l'exécution peut être interrompue puis,
    via le bouton Débogage, le processus peut être redirigé vers la ligne n°36 …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    Pour s'endormir, un mouton ne peut compter que sur lui-même …

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Bonjour à tous,
    ça valait vraiment le coup d'attendre l'approche de Marc-L
    chapeau l'artiste !
    parisdauphine si tu fais fortune avec la bourse n'oublie pas d’être très généreux
    avec cet excellent site "Developpez.com"
    pense a mettre ton post en RESOLU

  18. #18
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Merci bcp Marc, je teste ça ce soir (je n'ai pas le Pc là) et je vous tient au courant. Merci encore une fois

  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 674
    Points
    18 674
    Par défaut
    Citation Envoyé par spookyz Voir le message
    ça valait vraiment le coup d'attendre l'approche de Marc-L, chapeau l'artiste !



    Après la version en Late Binding (voir Early ou Late Binding), voici la version censée être plus efficace en Early Binding :
    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
    '   Menu Outils, Références :  cocher Microsoft XML, v3.0
     
    Private Declare Function InternetCheckConnectionA Lib "Wininet" (ByVal SITE$, ByVal one&, _
                                                                     ByVal zero&) As Boolean
     
    Function WebOK(Optional ByVal URL$ = "http://www.msn.com") As Boolean
                P& = InStr(9, URL, "/"):  If P Then URL = Left$(URL, P)
             WebOK = InternetCheckConnectionA(URL, 1, 0)
    End Function
     
     
    Sub Demo()
        Dim Hlk As Hyperlink, oXhttp As New MSXML2.XMLHTTP
     
        With Feuil1
            If WebOK(.Hyperlinks(1).Address) = False Then Beep: Exit Sub
            ReDim DT(1 To .UsedRange.Rows.Count, 1 To 1)
     
            For Each Hlk In .Hyperlinks
                With oXhttp
                    .Open "POST", Hlk.Address, False
                    .Send
     
                    If .Status = 200 Then
                        T$ = .responseText
                        P& = InStr(T, "End of placement</td><td>")
     
                        If P Then
                            T = Mid$(T, P + 25, 10)
                            If IsDate(T) Then DT(Hlk.Parent.Row, 1) = T
                        End If
                    End If
                End With
     
                DoEvents
            Next
                          Set oXhttp = Nothing
            .[E1].Resize(UBound(DT)) = DT
            Beep
        End With
    End Sub
    _______________ ____________________________________ ______________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    La connaissance, c'est comme la confiture, moins on en a plus on l'étale !

  20. #20
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    je viens de tester le prog et ça marche super bien Merci Bcp et comme a dit Spookyz "CHAPEAU L'ARTISTE". C'est rapide, ça ne bloque pas et ca saute les liens qui ne s'ouvrent pas !! Merci, vous m'avez rendu un grand service

    MERCIIIIIIIIIIIIIII ))

    Merci Bcp oui, chapeau bas, ça fonctionne super bien Merci pour votre aide à tous les deux !!
    Pour la fortune, je pense qu'il faudra attendre un peu, ca sera pas pour tt de suite

    Citation Envoyé par Marc-L Voir le message
    Il y a aussi des cellules en bleu souligné mais sans lien hypertexte dans le fichier joint;
    cela ne pose pas de problème, juste qu'il n'y aura pas de date associée …
    oui, j'ai constaté ça, et effectivement ça laisse des cases vides sans dates

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [Toutes versions] Récupérer des données internet générée sous html par un Formulaire avec méthode "POST"
    Par philoul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/08/2013, 15h44
  2. récupérer des données sur internet
    Par rico63 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2012, 16h59
  3. [AC-2007] Récupérer des données sur internet
    Par nadir-1961 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/06/2011, 13h09
  4. [XL-2003] Récupérer des données d'une page internet avec login
    Par yoyo_l dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/08/2009, 22h58
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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