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. #181
    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
    c'est normal qu'il se passe rien après l'apparition du bandeau j'ai bloqué les lignes et mis un exit sub dans la sub
    c'etait juste pour te montre en IE non visible comme il devient le bandeau
    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

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


    1er essai : bloqué sur la boucle de la page ne passant pas à "complete" …
    Fermeture d'IE via le Gestionnaire des tâches (là il suffirait d'un classique On Error Goto pour éviter cela !)
    puis second essai : OK ‼ Le bandeau apparait dans un popup classique …

    Troisième essai en réactivant Enter et en enlevant l'Exit Sub : cela fonctionne !
    En tout cas sur cette configuration, je testerais sur une autre …

    Pour palier au problème de la boucle sans fin, je modifierais comme dans ma Demo2 en testant la disponibilité d'un élément …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #183
    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
    OK ‼ Le bandeau apparait dans un popup classique …
    c'est le but!!
    par les api je remet les attribut classique d'une fenêtre Windows et je la sépare de la fenêtre IE en changeant sont parent

    comme ca on peut travailler avec IE invisible ,tu vois le truc

    sympa non?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #184
    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


    Oui !

    Tu rends visible juste ce qu'il faut, le SendKeys fonctionne bien …
    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)

  5. #185
    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
    Citation Envoyé par Marc-L Voir le message


    Oui !

    Tu rends visible juste ce qu'il faut, le SendKeys fonctionne bien …
    et non!! justement c'est pas synchro de temps en temps et puis ne pas se taper la fenêtre IE quand ca mouline ca peut avoir son avantage

    c'est quoi ce test sur l'existence d'un object dont tu parlais précédemment ?? quel post ta démo
    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

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

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

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

    Je parlais de ton SendKeys ‼

    Sinon c'est toujours mon code du post #33 en page 2 (lignes n°15 à 17) …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

    Du nouveau ! J'ai migré un PC Windows 8 vers Windows 8.1 sans percuter que fatalement l'IE10 passerait en IE11 …

    • Déjà cela touche les codes en VBScript ! Le premier test après la migration et en plein dans le mille !

    Code ne fonctionnant plus avec IE11 pour tester si un objet est bien présent dans la page :

    . . .While Not IsObject(.Document.all("NomObjet"))

    Contournement pour IE11 : While .Document.all("NomObjet") Is Nothing mais ne fonctionnant pas avec les versions antérieures !

    • David, j'ai le même message d'erreur, celui de ton post #34 mais seulement lors du second lancement de mon code du post #33
    car lors du premier aucun souci, le téléchargement s'effectue bien même si j'ai l'impression que c'est un peu plus long qu'avec IE10 …

    Et j'ai trouvé quelque chose d'étonnant : l'instruction Quit d'IE11 ferme bien l'application
    mais en vérifiant avec le Gestionnaire des tâches il subsiste un résiduel dans les processus !
    En le supprimant, mon code fonctionne de nouveau !
    David, si tu peux vérifier qu'il n'y ait rien en mémoire concernant IE avant de lancer mon code …
    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)

  8. #188
    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 c est normal Marc
    Marc c est normal le. Residuel avec W7 aussi en fait si ti utilise office 32 l objets IE. Quand IEest lancé. Le syswow 64 fait son boulot et lance donc l exe du (X86) ca l a toujours fait c est pour cela les nuances quand au fonctionnement selon les versions
    En direct de ma plage sous les pins donnerais plus d explications ce soir
    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

  9. #189
    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 : j'ai regardé dans le gestionnaire des tâches et effectivement il y a un processus résiduel Internet Explorer qui reste dans les processus en arrière-plan alors même que IE soit apparemment fermé suite au IE.Quit.

    Et effectivement lorsque je ferme ce processus dans le gestionnaire de tâches ton code fonctionne sans problème.

    Autre test : si j'ouvre préalablement IE puis que je lance ton code il fonctionne plusieurs fois sans l'apparition du message d'erreur et lorsque je regarde dans le gestionnaire de tâches je ne trouve pas ce processus résiduel.

    Ferme IE, lance ton code puis lance cette procédure. Lance à nouveau ton code pour voir ce que cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Kill_Internet_Explorer()
    Dim objWMIService As Object
    Dim colItems As Object 
    Dim objItem As Object
     
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'", , 48) 
     
    For Each objItem In colItems
        objItem.Delete_
    Next
    End Sub
    Chez moi cela tue le processus et ton code peut être relancé.
    Qu'en est-il de ton côté ?

    A+

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

    Oui David ton code fonctionne bien, c'était une de mes options, sinon avec un méchant TaskKill

    Ce qui est marrant c'est qu'en VBScript après l'instruction Quit IE11 finit bien par se fermer totalement après ~ 15s …

    Patrick, c'est peut-être "normal" avec IE11 mais que ce soit sous Seven 64 bits comme sous Windows 8 64 bits
    avec IE9 comme avec IE10 jamais je n'ai rencontré un tel comportement ‼
    Et sans devoir attendre une quinzaine de secondes pour relancer un VBScript !

    Pour contourner ce souci spécifique donc à IE11, activer On Error Resume Next avant d'affecter le CreateObject à une variable
    puis si Err.Number < 0 buter IE puis affecter de nouveau le CreateObject à une variable sans oublier de la libérer à la fin …

    Edit : comme IE11 m'a l'air plus lent, sur certains ordinateurs il pourrait être nécessaire d'augmenter la temporisation
    avant de rendre visible IE, j'ai le cas depuis le passage à IE11 alors que le même ordinateur sous IE10 n'a jamais eu ce souci !

    Pour conclure : vive IE8, IE9 & IE10 !
    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. #191
    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
    Cest normal ie 9 est en 32dans les deux dossier programme et passe par le syswow
    Je pensait que vous l aviez deja remarqué
    En direct de la buvette les orteil en eventail
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #192
    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
    MARC QUAND TU EXECUTE UN VBS C EST LA VERSION DE WINDOW (32/64) QUI S EXECUTE ET DONC ICI EN L OCCURENCE DANS LE CADRE D UNE INSTANCIATION DE IE CE SERA DONC LA 64 A L INVERSE DE OFFICE QUI LANCE LA 32c est pour cela que tu a d abors la 64 qui demarre et execute les commandes en 32 ce qui a pour consequence avec les gestion de perdre le focus des element voir du document la librairie n est pas equippée pour cette gestion d erreur et donc au cun plantage mais un code bloqué

    Et ca ne va pas aller en s arrangeant vu que IE. RESTERZ UNE APPLICATION NON EVOLUTIVE
    VU LA NAISSANCE DE EDGE
    D ailleur on trouve de plus en plus des app IE SANS INStallateur basé sur IE9 REPONSE TrOUVER SUR MSDN
    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

  13. #193
    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



    MAIS AUCUN SOUCI AVEC LES VERSIONS 64bits de IE9 & IE10 ‼

    Car il ne s'agit pas d'un VBScript lancé via VBA mais d'un .vbs lancé manuellement via un raccourci du bureau !
    Le même vbs ne pose aucun souci avec IE9 & IE10 sous Seven ou Windows 8 les deux en 64 bits …

    C'EST SEULEMENT AVEC IE11 ‼

    Et mon code VBA s'exécute bien avec IE11 au premier lancement …
    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)

  14. #194
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui il fait bien le premier mais après dans les taches tu verra une instance persistante car IE11 ne passe pas par le syswow c'est vraiment un 64 bit
    c'est pour cela qu'il y a une version diminuée dans le (86) malheureusement le 64 passe la main au 32 du (86) lancé par office

    seul problème une fois que la main est passé certaine commandes de la librairie déraillent parce que le document a été remplacé par le 32

    en fait si tu regarde bien dans les taches l'instance persistante ne bouje plus en terme d octet si ton PC est bien installé normalement elle est même a zéro

    cependant VBA le donneur d'ordre n'a pas capter ce changement lui attend la réponse avec les do/loop ect... et voila ou c'est ballo

    par contre comme le 32 a pris le relais mais dans la même fenêtre certaines fonction de la librairie fonctionnent encore
    c'est pour cela que sur certain pc selon les mises a jour etc.... des fois ca marche des fois non

    exemple pour toi le ready 4 qui n'arrive jamais , en fait il est arrivé mais VBA ne peut plus le capter et donc interroge sans cesse IE et ralenti sévèrement la mise ajour graphique de la page si ce n'est la bloquer tout court

    d'où aussi ton test sur l'object ou nothing dans divers exemple de tes discutions qui fonctionnent alors que le ready et en rade ou même a 3 voir moins

    le soucis avec tes méthode de test object et nothing c'est que c'est assez model perso et donc pas universel


    si tu lance un VBS a la main c'est normal que tu n'est pas de soucis c'est le wscript.exe(64) qui est lancé donc IE 64 et il y a pas transfert(sywow:32/64)

    j'ai tout scrupter depuis des mois tu sais combien c'est un sujet qui me passionne et sur forum et question MSdN on a a des bribes de reponse il faut fouiller fouiller
    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

  15. #195
    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
    Citation Envoyé par patricktoulon Voir le message
    si tu lance un VBS a la main c'est normal que tu n'est pas de soucis
    Non Patrick, j'ai décrit exactement le contraire : même en lancement manuel,
    le système met grand minimum 15 secondes pour fermer définitivement IE11 ! Et avant c'était quasi instantané !
    Que ce soit IE9 ou IE10 sous Seven comme sous Windows 8 …
    Qui plus est un vbs fonctionnant sans souci sur les versions antérieures plante sous IE11 …

    Quant aux moyens de détecter si un objet est présent, y a pas vraiment le choix lorsque le statut de la page est à "complete"
    et que les données ne sont toujours pas en place ! Exemple d'EuroNext ou d'autres sites envoyant des requêtes en JScript …
    Donc soit tu tentes une temporisation longue pour éviter d'être en avance soit tu détectes l'objet afin d'être plus efficace ‼
    Et c'est universel vu que cela marche un peu partout à travers le globe ! (je ne poste pas qu'ici et pas le seul à procéder ainsi …)
    Détecter l'objet est aussi une méthode pour réduire sensiblement le temps d’exécution avec IE, surtout au sein d'une boucle ! …
    Je l'utilise même pour des sites où le ReadyState passe bien à 4 mais mettant du temps à s'activer
    à cause des pubs, des stats de Google ou autres joyeusetés dans le genre inutile !
    Pourquoi attendre le chargement complet de la page si les éléments nécessaires sont déjà chargés trois secondes avant ?‼
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #196
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    chez moi la même code en vba ou vbs ne donne pas le même résultat

    si je lance le vbs a la main impec!!!! et IE11 se ferme immédiatement a quelque millièmes prêt j'ai pas les moyen de vérifier

    si je lance le vbs par VBA >>>>plante parfois mais ieexplorer.exe (syswow) reste même si la macro a fonctionné
    si le même code en VBA est lancer >>>plante

    W 7 premium 64 IE 11 office 2007
    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. #197
    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


    En fait de mon côté la tâche IE11 se ferme instantanément mais en même temps un résiduel apparaît dans les processus
    et s'il s'agit d'un appel via un vbs manuel ce résidu disparaît une bonne quinzaine de secondes après la fermeture
    et est bloquant en cas de nécessité immédiate de relancer le vbs ou un autre ou encore un appel en VBA !
    Et si l'appel est en VBA, ce résiduel ne disparait pas … Vive donc les versions précédentes !

    Déjà il y a longtemps une malheureuse mise à jour de Windows Update m'avait collé un IE11 sous Seven,
    elle a été virée en moins de 48 heures vu les ennuis remontés …
    Depuis il y a dû y avoir une flopée de correctifs mais franchement, pour une simple fermeture, purée !
    Alors que les versions antérieures n'avaient pas de souci … Déjà qu'après IE9 ils ont flingué la recherche par classe !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 952
    Points : 9 281
    Points
    9 281
    Par défaut
    hello,
    pour piloter un navigateur, je vous propose un outil gratuit (Licence Apache 2.0) : Selenium Automation
    Selenium est un outil d'automatisation de navigateur web. Il permet donc d'écrire, de manière plus ou moins assistée, des scripts dont l'exécution réalisera automatiquement des actions dans un navigateur web : visiter une page, cliquer sur un lien, remplir un formulaire, etc. et de récupérer les résultats de ces actions.
    Il existe des APIs clientes pour Java, C#, Ruby,Python mais aussi VB.Net, Visual Basic Applications and VBScript grâce à SeleniumBasic téléchargeable ici
    Une fois installé vous disposez dans l'éditeur VBA d'une nouvelle bibliothèque dans les références : Selenium type Library
    Si vous avez Firefox installé sur votre PC , une installation d'une extension (Selenium IDE) est proposée.

    Enregistrement d'actions via Selenium IDE
    La manière la plus simple de créer des scripts Selenium est de les enregistrer à la manière de macros, via l'outil Selenium IDE, un plugin pour Firefox qui permet d'enregistrer les actions que vous réalisez dans le navigateurs et de pouvoir les rejouer. Grâce au menu Fichier/Exporter le test sous ... vous pouver exporter votre script dans votre langage de programmation préféré dont VBA.
    Exemple d'enregistrement de script pour le téléchargement des historiques de ABCBourse :
    Nom : SeleniumIDE.png
Affichages : 412
Taille : 32,9 Ko

    et voici le code VBA pour télécharger les historiques ABCBourse :
    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
    Public Sub AspirateurABC()
      'J.P Juillet 2016
      Dim By As New By, Assert As New Assert, Verify As New Verify, Waiter As New Waiter
      Dim driver As New WebDriver
      'on change les paramètres de Firefox pour un téléchargement automatique
      'des fichiers .txt
       Dim fxProfile As New FirefoxDriver
       driver.SetPreference "browser.download.folderList", 2
       driver.SetPreference "browser.download.manager.showWhenStarting", False
       driver.SetPreference "browser.download.dir", "F:\temp"
       ' ne pas demander pour les fichiers .txt (pour les csv -> text/csv)
       driver.SetPreference "browser.helperApps.neverAsk.saveToDisk", "text/plain"
      driver.Start "firefox", "http://www.abcbourse.com/"
      driver.Get "/download/historiques.aspx"
      driver.FindElementById("ctl00_BodyABC_strDateDeb").Clear
      driver.FindElementById("ctl00_BodyABC_strDateDeb").SendKeys "26/05/2015"
      driver.FindElementById("ctl00_BodyABC_strDateFin").Clear
      driver.FindElementById("ctl00_BodyABC_strDateFin").SendKeys "26/05/2016"
      driver.FindElementById("ctl00_BodyABC_oneSico").Click
      driver.FindElementById("ctl00_BodyABC_txtOneSico").Clear
      driver.FindElementById("ctl00_BodyABC_txtOneSico").SendKeys "FR0000120222"
      driver.FindElementById("ctl00_BodyABC_Button1").Click
      'tempo pour permettre le téléchargement
      'on pourrait tester l'apparition du fichier téléchargé
      Application.Wait Now + TimeValue("0:00:10")
      driver.Quit
    End Sub
    Et voilà , avec ce code je récupère le fichier de l'historique dans le répertoire f:\temp
    Vous remarquerez que j'ai changé quelques paramètres de Firefox pour télécharger sans ouverture de fenêtre les fichiers .txt
    Sélénium peut commander aussi d'autres navigateurs comme Chrome, Opéra, I.E et fonctionne sous Windows, Linux , MAC.
    Voici un autre exemple pour une copie d'écran de la page ABCBourse en utilisant cette fois-ci Chrome :

    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
    Je ne suis pas un spécialiste de cet outil mais il m'a paru intéressant de vous le présenter , car il me semble qu'il peut rendre la vie plus facile.

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

  19. #199
    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
    @jurassic pork : j'ai téléchargé Selenium IDE 2.9.1 pour tester mais je n'arrive pas à le manipuler pour l'instant.

    Concrètement une fois que la fenêtre de Selenium apparaît :
    - quelles sont les étapes pas à pas pour enregistrer les actions réalisée dans le navigateurs ?
    - comment les rejouer ?

    Grâce au menu Fichier/Exporter le test sous ... vous pouver exporter votre script dans votre langage de programmation préféré dont VBA.

    J'ai
    C#, Java, Pithon2, Ruby dans la liste des langages proposés mais pas VBA.

    A+

  20. #200
    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




    Si c'est une nouvelle version de selenium VBA, j'espère qu'elle est moins limitée que l'ancienne …
    Patrick l'avait testé et en était vite revenu !

    En dehors de l'Enregistreur de scripts ouvrant la voie aux débutants,
    le seul plus que je lui avais trouvé était son mode ghost, un navigateur invisible …
    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)

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