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 :

Piloter la fenetre windows en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut Piloter la fenetre windows en vba
    Bonjour,

    Je souhaite recuperer les valeur de bourse sur abs bourse et au moment ou la macro appuie sur telechargement une fenetre Windows s'ouvre pour cliquer sur télécharger sous et je n'arrive pas a trouver le code malgré toutes mes recherches sur le net, Pouvez vous m'aider, voici mon 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
    31
    32
    Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Public Const MOUSEEVENTF_LEFTDOWN = &H2
    Public Const MOUSEEVENTF_LEFTUP = &H4
    Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
    Public Const MOUSEEVENTF_RIGHTUP Public Sub CreerNavigateur()
     
    Dim oNav As SHDocVw.InternetExplorer
    Dim oDoc As MSHTML.HTMLDocument
    Set oNav = New SHDocVw.InternetExplorer
    oNav.Visible = True
    'oNav.navigate "http://google.fr"
    oNav.Navigate "http://www.abcbourse.com/download/historiques.aspx"
    ' Attente avec timeout de 10 s
    If WaitIE(oNav, 10) Then
       ' 10 s écoulées et page non chargée
       MsgBox "Time out!"
    Else
       ' Page chargée, on continue
       Set oDoc = oNav.Document
       ' modification de la Valeur date
       oDoc.getElementsByName("ctl00$BodyABC$strDateDeb")(0).Value = "26/05/2015"    'la variable entre () => afficher la page et faire afficher la source rechercher la variable
       oDoc.getElementsByName("ctl00$BodyABC$strDateFin")(0).Value = "26/05/2016"
     
       'modification du n° de la valeur
       oDoc.getElementsByName("ctl00$BodyABC$txtOneSico")(0).Value = "FR0000120222"
     
       'activer la coche
       oDoc.getElementsByName("ctl00$BodyABC$oneSico")(0).Click
     
       ' Clic sur bouton telecharger
       oDoc.getElementsByName("ctl00$BodyABC$Button1")(0).ClickAs Long = &H10

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Conformément aux règles du forum, merci de baliser le code (et complet !) via l'icône dédiée #

    Sinon la recherche a certainement été succincte vu les exemples dans les discussions rien que dans ce forum !

    Automatiser l'ouverture d'un fichier compatible Excel depuis le Web (téléchargement)

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …


  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut
    Bonjour,

    Bien sur j'ai recherche dans ce forum la reponse à ma question et bien sur que j'ai deja lu votre lien proposé mais n'etant pas expert je ne comprends pas ce qu'il faut faire pour que vba puisse piloter la fenetre en faisant enregitrer sous.

    Il serait bien plus constructif de votre part de nous aider a comprendre que de formuler de telle reponse. Je serai expert j'aurai besoin de personne...

    Y a t il quelqu'un qui pourrait m'aider SVP.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Dans le lien il y a pourtant des explications avec même une étape pour se passer de "piloter" !

    Tout dépend ensuite des réponses obtenues dans les autres forums dans lesquels cette demande a aussi été postée …

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Par défaut
    Bonjour Marc-L,

    Je travail sur ce code avec Pulco41, on a pourtant testé tous les codes présent dans ton post : http://www.developpez.net/forums/d14...elechargement/

    Et j'ai le même problème que Pulco41, IE s’ouvre, avec les champs remplis, le bouton Télécharger est bien "piloté", le bandeau s'ouvre et propose "Ouvrir", "Enregistrer" avec ses déclinaison "Enregistrer sous" et "Enregistrer et Ouvrir", mais je suis bloqué comme Pulco41, je n'arrive pas a piloter le bouton "Enregistrer sous" de ce bandeau...

    Est ce un problème de version d'IE ? (je suis en version 11 sous Win7, et sous IE de la Win10)
    Est ce un problème de version d'Excel ? (je suis en version 2016 sous Win7, et sous 2010 sous Win10)

    Et comme Pulco41 je pense qu'un forum c'est de l'entraide, afin de nous aider a comprendre, car vous pensez bien que les 4 pages du lien de votre post on les a déjà retourné dans tout les sens.... Et comme dit Pulco41, on serait expert on aurait besoin de personne...

    On vous a posté le code, que manque-t-il ? Quel commande devons nous appliquer....

    @+ Arnaud41

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Comme j'attends toujours la publication du code complet (pourtant réclamée lors de ma primo intervention
    et sans tenant & aboutissant, à quoi bon perdre du temps !) avec maintenant la mise à jour de votre tentative
    selon les explications fournies dans le lien
    (ou ailleurs un peu partout sur le web !)
    (à noter itwoo pour lequel cette contribution a été créée a bien réussi à la suivre et à s'en sortir …)
    (du reste comme vous êtes deux à être censés l'avoir lue, comment l'étape 2 "pilote le bandeau" ?)

    je m'interroge sur la ligne de code n°32 du post initial et j'aimerais bien avoir un retour quant à cette ligne,
    son origine (est-ce un trivial copier / coller ?) ou carrément un lien vers sa source,
    car telle quelle, cette ligne me semble sortir d'un quelconque chapeau !

    Sinon patienter, d'autres pourraient aider (quoique avec les -1 que j'ai pris ils n'auront peut-être pas envie !) …

    Edit : le site ABC propose une API et il y a même un exemple de code en VBA !

    _________________________________________________________________________________________________________
    L'effort fait les forts …


  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par pulco41 Voir le message
    Bonjour,

    Bien sur j'ai recherche dans ce forum la reponse à ma question et bien sur que j'ai deja lu votre lien proposé mais n'etant pas expert je ne comprends pas ce qu'il faut faire pour que vba puisse piloter la fenetre en faisant enregitrer sous.

    Il serait bien plus constructif de votre part de nous aider a comprendre que de formuler de telle reponse. Je serai expert j'aurai besoin de personne...

    Y a t il quelqu'un qui pourrait m'aider SVP.
    Citation Envoyé par Arnaud41
    Et comme Pulco41 je pense qu'un forum c'est de l'entraide, afin de nous aider a comprendre, car vous pensez bien que les 4 pages du lien de votre post on les a déjà retourné dans tout les sens...
    Quelle salaud ce Marc-L, vous posez une question et il ose vous suggérer de lire un post qui parle du même sujet et dont l'auteur a su résoudre le problème, sujet sur lequel il y a de nombreuses explications sur le code point par point. Vraiment pas constructif. En plus en tant qu'expert éminent sénior il aurait du regarder dans sa boule de cristal pour savoir que vous l'aviez lu son post c'est tellement évident.
    Nan mais c'est vrai quoi c'est un forum d'entraide et on est pas expert alors on exige un code complet et commenté et dans l'heure si possible.

    Vous avez posté du code c'est bien mais "le code marche pas" c'est très clair comme erreur, pour avoir plus de réponses il faudrait peut être expliciter un peu plus, par exemple y a-t-il une erreur lors de l’exécution du code si oui laquelle et a quelle ligne

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 69
    Par défaut
    Génial je vous adore :-)

    Le code posté fonctionne a merveille, si ce n'est que l'on arrive pas a coder le pilotage du bandeau...

    Je repost le code que l'on a fait :

    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
    Public Sub CreerNavigateur()
    Dim oNav As SHDocVw.InternetExplorer
    Dim oDoc As MSHTML.HTMLDocument
    Set oNav = New SHDocVw.InternetExplorer
    oNav.Visible = True
    'oNav.navigate "http://google.fr"
    oNav.Navigate "http://www.abcbourse.com/download/historiques.aspx"
    ' Attente avec timeout de 10 s
    If WaitIE(oNav, 10) Then
       ' 10 s écoulées et page non chargée
       MsgBox "Time out!"
    Else
       ' Page chargée, on continue
       Set oDoc = oNav.Document
       ' modification de la Valeur date
       oDoc.getElementsByName("ctl00$BodyABC$strDateDeb")(0).Value = "26/05/2015"    'la variable entre () => afficher la page et faire afficher la source rechercher la variable
       oDoc.getElementsByName("ctl00$BodyABC$strDateFin")(0).Value = "26/05/2016"
     
       'modification du n° de la valeur
       oDoc.getElementsByName("ctl00$BodyABC$txtOneSico")(0).Value = "FR0000120222"
     
       'activer la coche
       oDoc.getElementsByName("ctl00$BodyABC$oneSico")(0).Click
     
       ' Clic sur bouton telecharger
       oDoc.getElementsByName("ctl00$BodyABC$Button1")(0).Click
    PS on a essayé le "SendKeys" avec 2x "TAB", 2x "Flèche vers le bas" et "Entrer" ;-)

    Par contre je ne sais pas si on a encore le code, car on en a tellement essayé...

    Ce qu'on demande dans un forum, c'est pas que vous veniez taper sur mon clavier pour nous le faire, mais une aide tant qu'a la fonction a utiliser avec de l'aide afin d'apprendre....

    @+ Arnaud

    PS : l'API sur ABC Bourse, déjà testé et cela ne réponds pas a nos attentes.

    Et pour ce qui est des -1, perso c'est pas moi ;-)

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Code toujours incomplet car des erreurs à la compilation !
    Il suffit pourtant de tester de votre côté avant de poster, pas compliqué …

    Pourtant l'API renvoie exactement les données dont vous avez besoin ! (cf code VBA du site … )
    Là nous avons besoin d'une explication : en quoi ne répond-t-il pas à vos attentes ?
    En fait l'API renvoie les mêmes données obtenues par la requête Web comme dans la troisième étape de mon lien.
    Dans l'attente enfin d'une présentation claire & exhaustive de ce que vous avez réellement besoin
    car on ne pourrait proposer mieux que l'API propre à ce site ‼ Surtout qu'il est abordable …

    La fonction vous l'avez déjà : ce n'est pas du pilotage souris mais du pilotage clavier
    donc via SendKeys et temporisation liées à une observation certaine et sérieuse (comme indiqué au début de mon lien) …

    Donc il suffit déjà de voir au clavier si c'est possible et quelle est la séquence de touches et la temporisation nécessaires …
    (Il pourrait y avoir des différences d'un ordinateur à un autre.)
    Donc après l'explication digne de ce nom du besoin (avec tenants & aboutissants),
    dans l'attente d'un retour de vos tests clavier sur vos différentes configurations …

    Comme piloter IE est ce qu'il y a de moins fiable, envisager la requête utilisée par le navigateur
    en l'observant via son utilitaire d'inspection, bien plus fiable et plus rentable, enfin selon le besoin réel …

Discussions similaires

  1. [FAQ VB/VBA] Piloter MSN et Windows Messenger
    Par SilkyRoad dans le forum Contribuez
    Réponses: 8
    Dernier message: 03/02/2010, 16h13
  2. variable globale + fenetre de debogage vba
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 08/09/2005, 11h32
  3. [newbie] piloter une fenetre DOS
    Par GroGorZ dans le forum C++
    Réponses: 6
    Dernier message: 23/10/2004, 17h26
  4. Fenetre windows
    Par casafa dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 25/07/2003, 17h18
  5. [VB6] Listage des fenêtres windows
    Par gg78 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 27/05/2003, 11h36

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