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

  1. #221
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Quel est le module qui n'a pas pu être vérifié ?
    Apparemment rien à voir avec Selenium mais toujours ce message d'erreur...j'ai l'impression qu'il manque une extension liée au webdriver.xpi renommé en firefoxdriver.xpi

  2. #222
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    voilà ce que j'ai dans les extensions de Firefox :

    Nom : Extensions_Firefox.png
Affichages : 752
Taille : 64,8 Ko

    Le message en haut certaines extensions n'ont pas pu être vérifiées n'est pas important dans mon cas car cela concerne le HP smart web printing que je n'utilise pas.

    Attention il ne faut pas essayer de charger le firefoxdriver.xpi car c'est un module temporaire qui est chargé quand on exécute le code VBA
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #223
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    J'ai Selenium IDE et Selenium IDE VBA/VBS Formatters.
    J'ai également téléchargé Selenium IDE : Implicit Wait mais cela ne change rien.

    Attention il ne faut pas essayer de charger le firefoxdriver.xpi car c'est un module temporaire qui est chargé quand on exécute le code VBA
    J'avais essayé pour voir vu que ça ne fonctionnait pas mais cela n'a rien changé.

  4. #224
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    bon on va essayer autre chose pour voir si ce n'est pas le fait que tu utilises Excel en 64 bits qui pose problème :
    est-ce que ce code fonctionne ? (avec Chrome comme navigateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub CaptureABCBourse()
    Dim robot As New WebDriver
    robot.Start "Chrome", "http://www.abcbourse.com/download/historiques.aspx"
    ' test 1 prendre une copie d'écran
    robot.Get "/"
    robot.TakeScreenshot.SaveAs (ActiveWorkbook.Path + "/CopieEcran.png")
    robot.Quit
    End Sub
    sinon essaie de remplacer Chrome par internet explorer ou edge
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #225
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    est-ce que ce code fonctionne ?
    oui une copie d'écran est produite.
    Cela fonctionne également avec internet explorer.
    Avec Edge j'ai un message d'erreur
    Nom : screenshot.4.png
Affichages : 667
Taille : 3,1 Ko

    La page s'ouvre mais la Sub bloque sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    robot.Start "Edge", "http://www.abcbourse.com/download/historiques.aspx"

  6. #226
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Pour Edge je ne peux rien te suggérer car je ne suis pas sous windows 10,
    il y a aussi un autre driver PhantomJS qui travaille en mode invisible en javascript.
    Peux-tu essayer l'autre procédure (celle qui récupère l'historique) avec Chrome comme navigateur ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #227
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    en adaptant la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim fxProfile As New ChromeDriver
    ...
     driver.Start "chrome", "http://www.abcbourse.com/"
    cela fonctionne (le téléchargement du fichier texte est proposé à l'ouverture).

  8. #228
    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, ton code Demo3IE11 du post #210 fonctionne au premier lancement uniquement,
    au second j'ai toujours l'erreur à cause du résiduel d'IE11 comme Ryu dans son post #216 ! (et certainement David …)

    Sinon, à partir du ReadyState Interactive (3) à l'ouverture d'IE son Document est accessible sans gestion d'erreur :
    c'est pourquoi je procède ainsi même pour la majorité des pages où je n'ai pas de souci pour obtenir le Readystate à 4 …

    La ligne On Error Goto Fin après la détection du bouton sert juste en cas de modification future du code de la page
    si une erreur survient afin de ne pas laisser résident IE invisible sinon en l'état actuel ce n'est pas nécessaire …

    Sinon pour l'AppActivate, je pensais perdre le focus parfois à cause du Wait mais non,
    cela doit être dû à une pause insuffisante. Wait ou Sleep, peu importe …

    J'ai remarqué en testant différentes valeurs de Sleep IE11 se ferme bien si le téléchargement n'est pas déclenché …

    Donc Patrick a raison : il faut attendre la fin du téléchargement avant de fermer IE11 :

    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
    Dim IE As Object, T!
     
    Sub Demo4IE11()
           Const ELT = "ctl00_BodyABC_Button1"
             Dim Wb As Workbook
             T = Timer
        For Each Wb In Workbooks
              If Wb.Name Like "Cotations*.csv" Then Wb.Close False
        Next
         Set IE = CreateObject("InternetExplorer.Application")
        With IE
                  .Navigate "http://www.abcbourse.com/download/historiques.aspx"
            While .ReadyState < 3
                If Timer - T > 9 Then GoTo Fin
            Wend
            While Not IsObject(.Document.all(ELT))
                If Timer - T > 9 Then GoTo Fin
            Wend
                On Error GoTo Fin
            With .Document.all
                 .ctl00_BodyABC_strDateDeb.Value = "26/05/2015"
                 .ctl00_BodyABC_strDateFin.Value = "26/05/2016"
                 .ctl00_BodyABC_oneSico.Click
                 .ctl00_BodyABC_txtOneSico.Value = "FR0000120222"
                 .ctl00_BodyABC_dlFormat.Value = "x"
                 .Item(ELT).Click
            End With
                On Error GoTo 0
                Application.Wait Now + 0.00003
                .Visible = True
                CreateObject("WScript.Shell").SendKeys "{TAB}~"
    Fin:
                If Not .Visible Then Beep: T = 0: .Quit: Set IE = Nothing
        End With
    End Sub
     
    Private Sub Workbook_Deactivate()
        If ActiveWorkbook.Name Like "Cotations*.csv" And T Then
           ActiveWorkbook.Saved = True
           MsgBox "Chargé en " & Format$(Timer - T, "0.000s")
            T = 0
            IE.Quit:  Set IE = Nothing
        End If
    End Sub
    Test ultime pour le problème du résiduel d'IE11, mettre en commentaire la ligne n°40 (ou utiliser Debug.Print) :
    même sans le message, de mon côté IE11 se ferme bien dans les trois secondes suivantes, et du vôtre ?

    Ce code fonctionne aussi avec une version antérieure à IE11.

    Ligne n°29 : j'ai augmenté la pause car parfois en mode économie d'énergie (I7 2.4Ghz) il peut y avoir un loupé
    alors qu'avant avec IE10 il n'en y avait jamais eu …

    Edit : comme IE n'est pas fermé dans la procédure appelante mais dans l'évènement, il n'y a plus besoin du Wait après SendKeys !
    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. #229
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Marc,
    le code de Patrick (#210) fonctionne sans problème chez moi.
    Ton dernier code fonctionne également sans problème...une fois le SendKeys corrigé (il manque le "~") après {TAB}).
    Je n'ai pas compris en lisant tes explications pourquoi tu peux te passer du fait de tuer le processus résiduel ?

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


    Cela fonctionne aussi avec un espace à la place de Enter de mon côté (mais j'ai remis dans le code ~ pour Enter)

    En cas de loupé soit la pause n'est pas assez grande soit il y aurait besoin d'AppActivate
    Et l'avantage avec cette version, IE reste ouvert en cas de loupé, l'utilisateur peut quand même valider le téléchargement !

    Si IE11 est fermé après l'ouverture effective du fichier téléchargé dans Excel, il n'y a plus de problème de résiduel,
    comme Patrick l'avait évoqué …

    Par contre avec le code du post #210 de Patrick comme le mien du post #33 j'ai un résiduel avec IE11.
    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. #231
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Pourquoi ne te cales-tu plus sur la recherche du changement de titre "Téléchargement des cotations" concomitant à l'apparition du bandeau pour lancer les SendKeys ?
    Là tu es obligé d'utiliser une valeur arbitraire de Application.Wait.
    Dans le cas de cette page ça fonctionne (et encore chez toi c'est 3 sec, chez moi c'est plus sûr avec 4) mais il y a des cas je pense que tu ne pourras t'en passer car le laps de temps entre le clic sur le bouton de téléchargement et l'apparition du bandeau peut varier énormément. La question est de savoir si dans ces cas-là l'apparition du bandeau est concomitant au changement de titre de la page.

  12. #232
    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


    A l'ouverture de la page son titre est déjà "Téléchargement des cotations pour"
    et ne change pas lors de l'apparition du bandeau de téléchargement …

    De mon côté en mode Economie d'énergie je peux aussi avoir des loupés à 3
    par contre en mode Performances ou sur deux autres ordinateurs (I3 & I5) à fréquence variable 2 est suffisant …

    En détectant le bandeau comme Patrick, une pause est quand même nécessaire et quand je réduis la fréquence
    alors il faut augmenter la pause. Et cela peut fonctionner dix fois de suite mais pas à la onzième …
    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. #233
    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
    Par contre avec le code du post #210 de Patrick comme le mien du post #33 j'ai un résiduel avec IE11.
    c'est le residuel qui d'éclanche l'erreur au navigate

    chez moi la boucle d'attente sur l'Object fait abstraction car le résiduel fini par partir au bout d'un moment
    alors c'est vrai ta boucle sur l'erreur et suppression de l'instance est bien et elle fait gagner du temps sur tout pour des PCs un peu faiblards
    mais chez moi pas de soucis même avec le résiduel

    bon comme je l'ai dis précédemment ce genre d'astuce qui sont a garder devrait être posté dans la discussion du toto de qwazerty surtout celle la afin qu'elle soit accessible a tous

    @Marc

    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function IE_navigable (IE) 
    dim QRY ,T
    QRY  = "SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'", WMI = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"
        IE_navigable =true
    On Error Resume Next
    T=timer
     Do
            If Timer - T > 2 Then Beep: IE_navigate =false Exit function
            Err.Clear
            Set IE = CreateObject("InternetExplorer.Application")
            If Err.Number = &H800704A6 Then For Each IE In GetObject(WMI).ExecQuery(QRY, , 48): IE.Delete_: Next
        Loop While IE Is Nothing
                On Error GoTo 0
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub test()
    dim IE as oject
    if  IE_navigable(IE)  = true then '....
    '.............
    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

  14. #234
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Citation Envoyé par davido84 Voir le message
    jurassic pork j'ai fait ce que tu m'as dit et quand je lance la macro j'ai
    Pièce jointe 215544

    Apparemment il y a quelque chose qui manque.

    Pour info quand j'ouvre Firefox et que je vais dans les modules complémentaires il me signale qu'un module complémentaire n'a pas pu être installé car il n'a pas été vérifié (je te le signale au cas où sans savoir si cela a un lien...).
    A+
    hello davido84,
    tu dois avoir un souci avec le nom du fichier ou le répertoire où il se trouve ou d'accès au fichier :
    j'ai renommé le fichier firefoxdriver.xpi (qui est en fait le webdriver.xpi renommé) en firedriver.xpi qui se trouve chez moi dans le répertoire C:\Users\<nom du user>\AppData\Local\SeleniumBasic et j'ai le même message d'erreur que toi.

    J'ai remarqué aussi qu'en rajoutant un bloqueur de publicité dans le profil de Firefox cela accélére le téléchargement (on gagne le temps à aller chercher les différentes publicités qui se trouvent sur la page et qui parfois bloquent un peu).

    Pour ceux qui font des essais dans cette discussion avec internet explorer sans selenium : Avez-vous un bloqueur de publicité activé car il me semble que je vois des pubs dans les copies d'écran.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  15. #235
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Salut jurassic pork,

    je t'ai fait une copie d'écran.

    Tu as en haut le chemin du dossier.

    Parmi les fichiers .xpi tu as :
    - firefoxdriver.old : le fichier initial renommé
    - firefoxdriver.xpi : le fichier téléchargé dans ton dernier lien(tu remarqueras d'ailleurs qu'il pèse environ 5 fois moins que l'initial).

    Nom : screenshot.9.png
Affichages : 714
Taille : 34,0 Ko

    A+

  16. #236
    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
    Bonsoir les gars

    en faisant abstraction de mon partie pour IE je voudrais signaler quand meme que le titre de ce post n'a rien a voir avec firefox
    je pense ,pour que tout le monde benificie de l'intervention du travailleur jurassien sur cet addin qui me semble t il devait etre juste une parentheze , soit placé dans une contrib ou un autre post avec un titre évocateur
    comme cela on pourra le trouver sans peine, ici il se perd dans un sujet différent finalement

    peut etre aussi preciser dans la contrib que cela fonctionne pour IE

    le jurassien je t'invite donc a faire ton propre post dans un contrib en renseignant selon ton exeprience tout les astuces

    et je me ferait un plaisir de mettre en test poussé ou pas affin de l'enrichir

    a mediter
    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. #237
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Patrick a dit :
    en faisant abstraction de mon partie pour IE je voudrais signaler quand meme que le titre de ce post n'a rien a voir avec firefox
    Le titre du post n'est pas très clair : Piloter la fenêtre window en vba ce qui n'a rien avoir non plus avec Internet explorer

    Dans le post n° 1 il est dit :
    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
    bien sûr ensuite il y a un code avec des commandes pour internet explorer. Mais vu l'énoncé, tout les moyens (navigateurs) sont bons pour réaliser la fonction. C'est vrai que d'avoir deux discussions qui s'entremêlent ce n'est pas terrible et que ma contribution a dérivé sur des problèmes avec seleniumbasic pour davido84.
    Le principal c'est de répondre à la question posée et de proposer des solutions.
    N'importe comment je vais arrêter de parler de seleniumBasic dans ce post ou ailleurs car cela ne pas l'air à jour pour l'instant et n'a pas l'air d'avoir été testé avec du 64 bits.
    Pour davido84 (en attendant une nouvelle version de seleniumbasic) : Le problème est peut-être dû à l'O.S (je suis en windows 7) à la version d'Excel ( je suis en 2010 32 bits) ou à l'explorateur ( je suis en Firefox 47.0.1 32 bits). Dans la fiche de seleniumbasic c'est écrit :
    Tested environments
    Windows 8.1 / Excel 2010 32-bit / Firefox 39 / Selenium IDE 2.9.0
    Windows 7 / Excel 2010 32-bit / Firefox 39 / Selenium IDE 2.9.0
    Windows XP / Excel 2003 / Firefox 39 / Selenium IDE 2.9.0

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  18. #238
    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
    bon soir jurassic work
    Mais vu l'énoncé, tout les moyens (navigateurs) sont bons pour réaliser la fonction
    a condition dans ton optique d'installer ff et sélénium ou tout du mois avoir enregistré les dll et autre dans regedit

    cela dit c'est bien dommage que tu ne veuille pas rédiger ta propre contrib elle évoluerait et ferait peut être même évoluer sélénium
    a méditer
    loin de moi l'idée de t'arrêter sur ta lancée mais dans une contrib spécial sélénium on y verrait plus clair entre autre y a t il un interface sélénium comme dans FF mais externe etc.....
    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

  19. #239
    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
    Récemment un ancien code pilotant IE ne fonctionnait plus : c'était dû à la mise à jour IE11 !
    N'ayant rien sous le coude - n'ayant pas été prévenu du souci - je me connecte sur cette discussion
    pour en tirer la quintessence, s'agissant aussi d'un téléchargement …

    Je ne sais si c'était dû au site du pilotage qui ramait ou aux performances fluctuantes de la connexion Internet
    mais une simple pause après le clic sur le bouton de téléchargement n'était guère satisfaisante :
    valait mieux détecter l'apparition du bandeau du téléchargement comme le code du post #11 de David.
    Mais comme dans cette discussion, seule la touche de tabulation est prise en compte et pas la touche entrée,
    il faut attendre un peu pour qu'elle soit prise en compte soit comme dans le code du post #39 de Patrick
    soit en effectuant une pause suffisante afin que les deux touches soient acceptées.
    Si cette dernière est un peu juste ou si un ralentissement survient,
    c'est donc un loupé mais on peut quand même valider manuellement l'ouverture du fichier.

    L'idéal serait de détecter quand derrière ce bandeau c'est prêt, une sous-fenêtre gérant les messages

    En attendant, voici mon processus pilotant IE gérant même un éventuel loupé :

    • ouvrir la page Web sans attendre son chargement complet mais juste la disponibilité du bouton Télécharger
    (c'est plus rapide et pour ceux comme moi qui attendent indéfiniment le statut du chargement complet de la page …)
    • paramétrer la page puis cliquer sur le bouton Télécharger
    • attendre le bandeau du téléchargement
    • effectuer une pause raisonnable avant de simuler les touches tabulation et entrée
    • programmer dans un court délai le déclenchement d'une procédure de secours en cas de loupé avant de terminer le processus …

    Cette procédure de secours sert juste à simuler la touche entrée
    avant de se reprogrammer dans le cas d'un éventuel nouveau loupé …

    L'évènement Deactivate du classeur après détection de l'ouverture du fichier téléchargé
    annule le déclenchement de la procédure de secours …

    Code à copier intégralement dans le module ThisWorkbook :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #If Win64 Then
        Private Declare PtrSafe Function BringWindowToTop Lib "user32" (ByVal hWind&) As Boolean
        Private Declare PtrSafe Function FindWindowExA& Lib "user32" (ByVal hParent&, ByVal hChild&, ByVal ClassName$, ByVal WindowName$)
        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal MilliSeconds&)
    #Else
        Private Declare Function BringWindowToTop Lib "user32" (ByVal hWind&) As Boolean
        Private Declare Function FindWindowExA& Lib "user32" (ByVal hParent&, ByVal hChild&, ByVal ClassName$, ByVal WindowName$)
        Private Declare Sub Sleep Lib "kernel32" (ByVal MilliSeconds&)
    #End If
     
    Const PROC = "ThisWorkbook.KeyLoop", DS = 0.00002
    Dim IE As Object, D As Date, T!
     
    Sub Demo5()
           Const ELT = "ctl00_BodyABC_Button1", SC = 10
             Dim Wb As Workbook
             T = Timer
        For Each Wb In Workbooks
              If Wb.Name Like "Cotations*.csv" Then Wb.Close False
        Next
         Set IE = CreateObject("InternetExplorer.Application")
        With IE
                  .Navigate "http://www.abcbourse.com/download/historiques.aspx"
            While .ReadyState < 3
                If Timer - T > SC Then GoTo Fin
            Wend
            While Not IsObject(.Document.all(ELT))
                If Timer - T > SC Then GoTo Fin
            Wend
                On Error GoTo Fin
            With .Document.all
                 .ctl00_BodyABC_strDateDeb.Value = "26/05/2015"
                 .ctl00_BodyABC_strDateFin.Value = "26/05/2016"
                 .ctl00_BodyABC_oneSico.Click
                 .ctl00_BodyABC_txtOneSico.Value = "FR0000120222"
                 .ctl00_BodyABC_dlFormat.Value = "x"
                 .Item(ELT).Click
            End With
            While FindWindowExA(.HWND, 0&, "Frame Notification Bar", vbNullString) = 0
                If Timer - T > SC Then GoTo Fin
            Wend
                Sleep 800
                .Visible = True
                Sleep 100
                CreateObject("WScript.Shell").SendKeys "{TAB}~"
                D = Now + DS:  Application.OnTime D, PROC
    Fin:
            If Not .Visible Then T = 0: Beep: .Quit: Set IE = Nothing
        End With
    End Sub
     
    Private Sub KeyLoop()
            On Error Resume Next
            BringWindowToTop IE.HWND
        If Err.Number Then
            T = 0:  Beep:  Set IE = Nothing
        Else
            CreateObject("WScript.Shell").SendKeys "~"
            D = Now + DS:  Application.OnTime D, PROC
        End If
    End Sub
     
    Private Sub Workbook_Deactivate()
        If ActiveWorkbook.Name Like "Cotations*.csv" And T Then
            Debug.Print "Demo5 : " & Format$(Timer - T, "0.000s")
            Application.OnTime D, PROC, , False
            T = 0:  IE.Quit:  Set IE = Nothing
            ActiveWorkbook.Saved = True
        End If
    End Sub
    Tests effectués sur trois ordinateurs portables de différentes puissances (i3, i5 & i7)
    avec différentes configurations d'IE (9 & 11), de Windows (Seven & 8.1) et d'Excel (2003, 2007 & 2010) …

    Deux ordinateurs tournent efficacement en réduisant la pause de la ligne de code n°42
    mais cette pause à 800 est plus sûre pour un troisième et pourtant ce n'est pas le moins puissant …
    Pour affiner sur un ordinateur particulier, démarrer à 200 cette pause.
    S'il n'y a pas l'effet flash lors de l'apparition d'IE, augmenter cette pause de 100 …

    David, merci de me dire si les déclarations sont correctes pour Excel 64 bits …
    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. #240
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Davido84 tu as bien téléchargé la version de mon lien ( Seleniumbasic) ? seule cette version permet d'utiliser vba.
    Quelle version de firefox as-tu ? moi c'est la 36.0 et je suis sous windows 7
    voici ce qui apparaît lorsque je fais un exporter le Test sous :
    Petite parenthèse...
    Depuis la mise à jour de Firefox 47.0, Selenium ne semble plus fonctionner aussi bien qu'avant.
    Préférer Chrome en attendant une mise à jour
    MPi²

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