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 :

Internet via vba excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut Internet via vba excel
    Bonjour,
    Je me suis mis il y a peu de temps à la programmation en vba et j'ai lu avec intérêt la formation :
    Interaction avec Internet Explorer via VBA Excel
    par Qwazerty.
    Je souhaitais précisément automatiser un téléchargement et j'ai essayé d'écrire le programme suivant quasiment plagié sur la formation lue.



    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 PremierIE()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim GoDownload As HTMLFormElement
    Dim IEDoc As HTMLDocument
    Set IE = CreateObject("InternetExplorer.Application")
     
    'Chargement d'une page web Google
    IE.navigate "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
    'Affichage de la fenêtre IE
    IE.Visible = True
    'On pointe le membre Document
    Set IEDoc = IE.document
     
     
    Set GoDownload = IEDoc.forms("op")
    GoDownload.submit
     
    'On libère la variable IE
     
    Set IE = Nothing
    End Sub

    Malheureusement ce ne marche pas.
    A la ligne "GoDownload.submit" je reçois le message :
    "Variable objet ou variable de bloc With non définie"
    Effectivement, à la ligne précédente la valeur de GoDownload est "nothing"
    Il me semble pourtant que le name du bouton est bien "op" et quil est de type submit dans un form!
    Bien sûr le bouton est défini comme HtmlInputElement mais j'avais éssayé cette altenative conformément au même cours de Qwazerty et cela cale aussi sur "GoDownload.Click cette fois.
    Là je tourne en rond et crie au secours.
    Est-ce que quelqu'un peut m'aider?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies comme ceci
    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
    Sub PremierIE()
    Dim IE As InternetExplorer
    Dim Lien As String
     
    Lien = "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
    Set IE = New InternetExplorer
    IE.navigate Lien
    WaitIE IE
    IE.Visible = True
    IE.document.getElementById("edit-go").Click
    WaitIE IE
    Set IE = Nothing
    End Sub
     
    Private Sub WaitIE(ByVal IE As InternetExplorer)
     
    Do While IE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut
    Merci Mercatog,
    Cela marche et je comprends la logique mise en oeuvre. Quand je pense que j'en étais encore aux macro excel4 il y a un mois, chapeau au site à qui je dois toute la progression.
    Pourtant, je n'arrive pas à mon objectif.
    Internet explorer m'ouvre une boîte à trois boutons " ouvrir" , "enregistrer" et "annuler".
    Et si j’appuie sur "enregistrer", une autre boîte avec le nom de fichier suggéré par le site et l'emplacement.
    Tout cela me convient mais je ne veux pas devoir intervenir puisque je veux automatiser.
    Je ne sais pas si je peux configurer IE que je ne connais pas ou si je dois l'instruire depuis vba.
    Merci.

    Bonjour,
    J'ai essayé de prendre la contrôle de la boîte de dialogue d'IE mais sans succès.
    Je tourne à nouveau en rond.
    Voici mon projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub PremierIE()
    Dim ie As New InternetExplorer
    Dim lien As String
     
    lien = "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
    Set ie = New InternetExplorer
    ie.navigate lien
    WaitIE ie
    ie.Visible = True
    ie.document.getElementById("edit-decimal-separator-2").Click
    ie.document.getElementById("edit-go").Click
    Application.SendKeys "%r", True
    Application.SendKeys "%e", True
     
    WaitIE ie
     
    Set ie = Nothing
    End Sub

    On reste bloqué sur la boîte et j'ai essayé pas mal de syntaxe pour sendkeys.
    Quelqu'un peut il me sortir du trou?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu envoies tes Sendkeys avant que la boite de dialogue n'apparaisse.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut cible sendkey
    Bonsoir,
    J'ai essayé beaucoup de choses, par exemple ceci:
    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
    Sub PremierIE()
    Dim ie As New InternetExplorer
    Dim lien As String
     
    lien = "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
    Set ie = New InternetExplorer
    ie.navigate lien
    WaitIE ie
    ie.Visible = True
    ie.document.getElementById("edit-decimal-separator-2").Click
     
    Application.SendKeys "%r", True
     
    ie.document.getElementById("edit-go").Click
     
    Application.SendKeys "%e", True
     
    WaitIE ie
     
    Set ie = Nothing
    End Sub
    Le "alt-r" est envoyé juste avant la commande ultime de la boîte de dialogue du site.
    Il est destiné à envoyer l'instruction "enregister" à la boîte IE.
    Mais la commande n'arrive pas à la boîte.
    J'ai essayé un autre navigateur, google chrome qui est celui utilisé par Kwazerti, histoire de travailler avec un logiciel qui accepte de travailler par défaut mais pas de bibliothèque pour digérer, ou alors c'est moi qui suis nul.
    Ce qui est assez probable.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub PremierIE()
    Dim IE As New InternetExplorer
    Dim Lien As String
     
    Lien = "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
    Set IE = New InternetExplorer
     
    IE.Visible = True
    IE.navigate Lien
    WaitIE IE
     
    IE.document.getElementById("edit-decimal-separator-2").Click
    IE.document.getElementById("edit-go").Click
     
    Application.Wait DateAdd("s", 3, Now)
    Application.SendKeys "%E", True
     
    Set IE = Nothing
    End Sub
     
    Private Sub WaitIE(ByVal IE As InternetExplorer)
     
    Do While IE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut erreur automation
    Bonjour Mercatog et merci pour ta disponibilité.
    Pas pu essayer ta version.
    Cette fois, il bloque sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While IE.readyState <> READYSTATE_COMPLETE
    avec la mention:
    erreur d'execution '-2147023179 (800706b5)
    erreur automation
    interface inconnue.
    et si je bypass la sub Waitie, il bloque sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IE.document.getElementById("edit-decimal-separator-2").Click
    Tout cela ne bloquait pas hier....!
    Vraiment très étrange car ta nouvelle instruction ne parait pas en cause.
    .

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 114
    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 114
    Par défaut
    Salut
    Voila uyne piste sur laquelle j'ai gratté un peu hier au soir.
    Je n'ai pas le temps aujourd'hui de faire plus de recherche, je dois reinstaller mon PC... ma version d'essai de Win8 est périmée et mon PC redémarre toutes les 2 heures...

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub http()
    'Il faut activer la bibliotheque Microsoft WinHTTP Service
     
    Dim DemandeFichier As New WinHttpRequest
    Dim URL As String
     
    URL = "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
     
        DemandeFichier.Open "POST", URL
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
    'Accept -Encoding: gzip , deflate, sdch
    'Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    'Cache -Control: Max -age = 0
    'Connection: keep -alive
    'Content-Length:135
    'Content-Type:application/x-www-form-urlencoded
    'Cookie:__utma=110835089.1268733027.1359309520.1359309520.1359311400.2; __utmc=110835089; __utmz=110835089.1359309520.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ZDEDebuggerPresent=php,phtml,php3
    'Host: europeanequities.nyx.com
    'Origin:https://europeanequities.nyx.com
    'Referer:https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f
    'User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
        DemandeFichier.SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        DemandeFichier.SetRequestHeader "Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3"
        DemandeFichier.SetRequestHeader "Accept-Encoding", "gzip , deflate, sdch"
        DemandeFichier.SetRequestHeader "Accept-Language", "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4"
        DemandeFichier.SetRequestHeader "Cache-Control", "Max -age = 0"
        DemandeFichier.SetRequestHeader "Connection", "keep -alive"
        DemandeFichier.SetRequestHeader "Content-Length", "135"
        DemandeFichier.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        DemandeFichier.SetRequestHeader "Cookie", "__utma=110835089.1268733027.1359309520.1359309520.1359311400.2; __utmc=110835089; __utmz=110835089.1359309520.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ZDEDebuggerPresent=php,phtml,php3"""
        DemandeFichier.SetRequestHeader "Host", "europeanequities.nyx.com"
        DemandeFichier.SetRequestHeader "Origin", "//europeanequities.nyx.com"
        DemandeFichier.SetRequestHeader "Referer", "https://europeanequities.nyx.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3Aa4eb918a59a5b507707ea20eb38f530f"
        DemandeFichier.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17"
     
     
     
     
        DemandeFichier.Send
     
        DemandeFichier.WaitForResponse
     
        intOutFile = FreeFile
        Open "E:\out.txt" For Output As #1
     
        sStr = DemandeFichier.GetAllResponseHeaders
        Print #1, sStr
        'sStr = DemandeFichier.GetResponseHeader("Content-disposition")
        'Print #1, sStr
     
        Close #1
     
     
        MsgBox DemandeFichier.ResponseText
     
    End Sub
    Dans le principe, j'ai essayé de recréer la requête POST faite par le site au server, le server envoie ensuite une réponse avec le fichier correspondant à la demande.
    Avec le code ci dessus, j'obtiens bien un réponse, mais je n'ai pas trouver comment prendre en charge le fichier qui normalement est attaché à la réponse.
    Dans les outils "inspecteurs" d'IE et de Chrome ont trouve pas mal d'infos concernant la requêtes.

    Bon courage
    ++
    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

  9. #9
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 114
    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 114
    Par défaut
    Salut

    Par rapport à ton MP
    Malheureusement, alors que "WinHTTP Service version 5.1" est activée, je reçois le message librairie inconnue sur WinHttpRequest.
    Du coup je suis bloqué.
    Est-ce qu'il y a une autre bibliothèque à activer?
    Apres recherche pour un projet perso, il existe un tutoriel sur le sujet, je pense que ton soucis vient de la déclaration de tes variables, il faut parfois déclarer le nom du module de classe (ou DLL) qui contient le type de variable souhaitée.
    Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim oWinHTTP As WinHttp.WinHttpRequest
    Je te laisse voir avec le tutoriel mais que ça ne t’empêche pas de poursuivre dans la voie tracée par Mercatog, dont les posts sont toujours très pertinents! Et que je salue d'ailleurs au passage

    Le plus dur étant la reconstitution de la requête.

    ++
    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

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 114
    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 114
    Par défaut
    Salut

    Je sais que je déterre un vieux post, je suppose que depuis le temps tu as résolu ton problème... mais au cas ou.
    En faisant des recherches pour répondre à un autre forumeur, j'ai fini par trouver comment envoyer et surtout recevoir une requête directement du serveur, avec les données à l’intérieur. Il se trouve en plus que c'est sur le même site sur lequel tu voulais travailler.

    Tu pourras trouver, je pense, une réponse "tardive" à ta question ici , si toute fois elle est toujours d'actualité

    ++
    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

Discussions similaires

  1. [XL-2007] Internet / intranet Explorer via VBA Excel
    Par Debutant10 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2012, 21h57
  2. connexion a un site internet sur IE via VBA excel
    Par deubelte dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/07/2008, 12h16
  3. programmer une tâche via VBA/Excel
    Par simstef dans le forum Excel
    Réponses: 5
    Dernier message: 07/08/2007, 15h53
  4. lien internet avec VBA EXCEL
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 10h40
  5. Manipulation du carnet d'adresse outlook via VBA Excel?
    Par Dragon Tours dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2005, 12h16

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