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

Contribuez Discussion :

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


Sujet :

Contribuez

  1. #161
    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 reference uiautomation dynamique dans module standard !!!
    bonjour Marc

    voila un exemple avec la reference dynamique qui fonctionne dans le module standard

    il suffit de tester des le lancement de la sub IE (demo4UI) si la reference est activée

    si elle ne l'ai pas on l'active

    le temps que IE aura mis pour mettre a jour sa page et les elements html remplis la reference sera bien intégrée

    teste cela dans un fichier vierge
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
    Dim IE As Object, TTVE As Long, mode%, T!, hwndIEedge As Long
     
    Sub Demo4UI()
        If ref_UI = False Then adddref "Demo4UI": Exit Sub
        Const ELT = "ctl00_BodyABC_Button1"
        Dim Wb As Workbook, mess As String
        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"
            .Visible = True    'facultatif!!!!!!!
            While .ReadyState < 3
                mess = "IE n'etait pas ready !!!"
                If Timer - T > 9 Then GoTo Fin
            Wend
            While Not IsObject(.Document.all(ELT))
                mess = "l'object " & ELT & " n'a pas été trouvé "
                If Timer - T > 9 Then GoTo Fin
            Wend
            On Error GoTo Fin
            With .Document.all
                mess = "les elements n'ont pas pu etre mis a jours"
                .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
            .Visible = True
            mess = "relax ca va trop vite!!"
            Sleep 1000
            TTVE = 0
            Bandeau
        End With
        Exit Sub
    Fin:
        MsgBox mess, vbCritical
        IE.Quit
    End Sub
    Sub adddref(fonction)
        Dim vbProj As Object
        On Error Resume Next
        Set vbProj = ThisWorkbook.VBProject
        vbProj.References.AddFromFile "C:\Windows\System32\UIAutomationCore.dll"
        On Error GoTo 0
        Application.OnTime Now + TimeValue("00:00:01"), fonction
    End Sub
    Function ref_UI()
        Dim Ref
        ref_UI = False
        For Each Ref In ThisWorkbook.VBProject.References
            If Ref.Name = "UIAutomationClient" Then ref_UI = True
        Next Ref
    End Function
    Sub Bandeau()
        Dim oIUIAIP As IUIAutomationInvokePattern, oCUIA As New CUIAutomation
        On Error Resume Next
        HIEFRAME = IE.hwnd    'FindWindow("IEFrame", vbNullString)
        BringWindowToTop HIEFRAME
        hwndIEedge = 0
        Do    'recherche du handle bandeau
            DoEvents: i = i + 1
            hwndIEedge = FindWindowEx(HIEFRAME, 0&, "Frame Notification Bar", vbNullString)     'recherche du handle de la fenetre de telechargement IE edge
        Loop While hwndIEedge = 0 Or i = 20000
        BringWindowToTop HIEFRAME
        Sleep 1000
        On Error GoTo rep
        Set oIUIAIP = oCUIA.ElementFromHandle(ByVal hwndIEedge).FindFirst(TreeScope_Subtree, oCUIA.CreatePropertyCondition(UIA_NamePropertyId, "Ouvrir")).GetCurrentPattern(UIA_InvokePatternId)
        oIUIAIP.Invoke
        Set oIUIAIP = Nothing: Set oCUIA = Nothing
        Sleep 500:
        IE.Quit
        MsgBox TTVE + 1 & " TENTATIVES"
        Exit Sub
    rep:
        Err.Clear
        TTVE = TTVE + 1
        If TTVE < 3 Then Application.OnTime Now + TimeValue("00:00:01"), "Bandeau"
        End Sub
    plus besoins de la bidouille
    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. #162
    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
    Bonjour, bonjour !

    Sauf que j'ai un message d'erreur : « L'accès par programme au projet Visual Basic n'est pas fiable » !
    Je sais pourquoi et c'est un cas à prévoir, donc ton code tel quel ne suffit pas …
    Ne pas oublier qu'en entreprise certains n'ont pas la possibilité de bidouiller certaines options d'Excel !

    Tout comme l'astuce sur le net de copier la dll dans le répertoire en cours,
    je considère aussi ce code comme une bidouille vu que je peux m'en passer !

    Et tu n'as toujours pas corrigé l'erreur déjà signalée par David sur le Navigate !


    Moi je ne bidouille rien, je change juste le répertoire courant en simulant manuellement
    un Enregistrer sous prenant deux secondes !
    Et c'est juste pour Seven car il n'y pas ce souci à partir de Windows 8 …

    Et parmi plus d'une dizaine d'ordinateurs que j'ai directement testés
    ainsi que ceux d'une connaissance pour laquelle j'ai indiqué cette manipulation
    pour l'instant tu es le seul pour lequel cela ne passe pas via un simple Enregistrer sous !


    J'ai envoyé la pièce jointe ci-dessous (pilotant abcbourse car plus rapide qu'EuroNext)
    à une autre connaissance pour sa configuration sécurisée du boulot car elle ne peut installer
    d'utilitaire pour voir les infos des fenêtres rattachée à IE en intranet (elle en a deux types)
    utilisant alors la fonction GetTopWindow en remplacement de FindWindowEx
    et donc avec les références déjà activées au niveau du classeur : elle n'a eu aucun souci !

    Quand je lui ai expliqué le fonctionnement d'UI Automation en passant le nom du bouton,
    elle m'a demandé s'il n'y avait pas un moyen de faire une procédure générique appelant
    le premier bouton car c'est toujours celui qu'il faut cliquer dans ses deux types de fenêtre :
    c'est ce que réalise la première démonstration d'UI Automation !

    La première démonstration SendKeys va bien de mon côté sous IE9 mais peut coincer sous IE11
    si elle est directement lancée à l'ouverture d'Excel. Par contre elle peut passer si elle est exécutée
    après la démonstration SendKeys 2, j'adore la fluctuation dans le pilotage d'IE … (Vive les requêtes !)


    J'ai lu sur un blog ou un forum étranger qu'UI Automation ne se déroulait pas toujours bien avec
    Windows 10, ce qui pourrait expliquer le souci du côté de David (en dehors d'Excel en 64 bits) …

    Voilà, voilà !
    Fichiers attachés Fichiers attachés
    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. #163
    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 marc

    quelle erreur sur le navigate ????

    je viens de tester ton fichier

    le send keys1 est long mais marche nickel

    le sendkeys 2 plante 2 fois sur 4

    les invoke marchent très bien

    W7 64 bit ,office 2007 32 bits donc utilisation de la version de IE 11 32 bit

    alors tiens toi bien

    sur mon PC perso salon Windows 7 ultimate 64 bits office 2013 64 bits ca marche a merveille et d'une rapidité hallucinante

    j'ai compris pourquoi je ne gardais pas uiautomation c'est une question d'administrateur j'ai mis tout mes pc en mode administrateur


    utilisateur Patrick et administrateur maintenant je pense que je le garde on verra demain si ca me fait le même coup
    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. #164
    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
    DEMO SENDKEY1
    regarde comme IE reste en dessous
    Nom : demo2.gif
Affichages : 519
Taille : 1,77 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

  5. #165
    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
    Bonjour marc

    c'est quoi la démarche ????

    error=2001
    error=2003

    et puis explique un peu ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       P = GetTopWindow(IE.HWND)
        Do
            If IsObject(IE.Document.all("ctl00_BodyABC_programmaticPopup_DropShadow")) Then Error 2000
            If Timer - T > SC Then Error 2003
            H = GetTopWindow(IE.HWND)
        Loop While H = P
    p= rien au départ non sans le sleep 1000

    cet api donne bien la fenêtre enfant1 en zorder 0 de la fenêtre IE non? donc H=0 ferait le même test non?

    ensuite ou est ta gestion d'erreur sur le navigate ???

    ensuite
    If T Then a chacune detes test sub lanceur ,T est sensé être quoi et quelle valeur

    et puis cette boucle est faite sur mesure pour ce site comme beaucoup de partie du code d'ailleurs
    ce qui implique que si je veut appliquer ta méthode je suis quasiment obligé de réécrire tout le code notamment les boucle isobject(en écriture et en conception)

    derniere question

    les deux invoke celle que tu utilise pas le string du bouton peut on faire la même chose pour "enregistrer"
    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. #166
    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
    quelle erreur sur le navigate ????
    Tu l'as corrigée depuis car quand j'ai copié ton code dès que tu l'as posté j'avais encore de l'HTML dans l'URL !


    Citation Envoyé par patricktoulon Voir le message
    le sendkeys 2 plante 2 fois sur 4
    Aucun souci de mon côté sous IE9 & IE11 ni du côté de ma connaissance …
    Peut-être en remplaçant Wait par Sleep 1000 (ou + si connexion plus lente); sinon c'est la fonction SetForegroundWindow

    Edit : Wait remplacée par Sleep dans la nouvelle pièce jointe du post #162.


    Citation Envoyé par patricktoulon Voir le message
    DEMO SENDKEY1 : regarde comme IE reste en dessous
    Oui je le sais, j'ai pourtant déjà prévenu dans mon post qu'avec IE11 cette procédure pouvait coincer !


    Citation Envoyé par patricktoulon Voir le message
    c'est quoi la démarche ???? error=2001 error=2003
    C'est pourtant déjà présent dans un précédent code ‼
    Je ré-explique donc : la constante SC est la valeur en secondes d'un timeout afin que cela ne boucle pas à l'infini …
    Le code d'erreur indique donc quelle boucle a été interrompue !
    En vérifiant l'affichage d'IE, on voit si c'est un problème du site ou juste la valeur de SC pas assez grande
    car elle est liée aux performances de l'ordinateur, de la connexion et du site …
    J'ai mis 15s car de mon côté au premier lancement cela prend moins de 6s puis avec le cache moins de 3 !


    Citation Envoyé par patricktoulon Voir le message
    et puis explique un peu ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       P = GetTopWindow(IE.HWND)
        Do
            If IsObject(IE.Document.all("ctl00_BodyABC_programmaticPopup_DropShadow")) Then Error 2000
            If Timer - T > SC Then Error 2003
            H = GetTopWindow(IE.HWND)
        Loop While H = P
    p= rien au départ non sans le sleep 1000
    cet api donne bien la fenêtre enfant1 en zorder 0 de la fenêtre IE non? donc H=0 ferait le même test non?
    Comme tu as confirmé « les invoke marchent très bien » la variable P ne peut pas être égale à 0 au départ
    sinon pourquoi l'aurais-je comparée à la variable H ! Et si au moins tu vérifiais enfin la valeur de P ?!

    Et là je dois re-préciser le contexte : le cas d'une connaissance ne pouvant pas contrôler
    le nom (la classe) de ses deux fenêtres car sinon avec un nom, conserver plutôt FindWindowEx !
    Quoique sa demande était d'essayer d'utiliser des méthodes génériques sans indiquer de nom
    au niveau du bouton à cliquer ni du côté d'une fenêtre à attendre …


    Citation Envoyé par patricktoulon Voir le message
    ensuite ou est ta gestion d'erreur sur le navigate ???
    Moi pas comprendre !
    Je rappelle de nouveau le contexte de ce classeur pour une personne en intranet (donc je peux pas tester !)
    pour vérifier de son côté si déjà piloter IE sur abcbourse fonctionne ou pas …
    Si tu entends un problème sur l'URL, de toute manière la seconde boucle sera forcément interrompue
    et je n'ai pourtant rien changé aux précédents codes ! Tiens par exemple coupe ta connexion internet et teste !


    Citation Envoyé par patricktoulon Voir le message
    If T Then a chacune de tes test sub lanceur ,T est sensé être quoi et quelle valeur
    La valeur est censée être différente de zéro (B-A-BA du BASIC le grand-père du VBA !)
    car comme tu peux le constater dans la gestion d'erreur la variable est mise à zéro en cas de problème !
    Sinon tu peux tester si la variable objet IE est toujours valide …
    J'ai juste déporter l'ouverture de la page dans une procédure indépendante afin d'éviter de répéter le même code
    dans chacune des quatre procédures; purée c'est juste un classeur pour tester, ne pas chercher midi à 14 heures ‼


    Citation Envoyé par patricktoulon Voir le message
    et puis cette boucle est faite sur mesure pour ce site comme beaucoup de partie du code d'ailleurs
    ce qui implique que si je veut appliquer ta méthode je suis quasiment obligé de réécrire tout le code notamment les boucle isobject(en écriture et en conception)
    Là tu recommences, on a déjà eu cette discussion ‼ Et puis pourquoi Stéphane (Qwazerty) se serait fendu de son tutoriel
    si le pilotage d'Internet Explorer était générique quelle que soit la page Web ?‼
    Et comme je le rappelle dans chaque contribution sur ce sujet, c'est une question de synchronisation spécifique à la page Web !
    C'est pour cela lorsqu'un site modifie le code source d'une page Web, souvent le précédent pilotage ne fonctionne plus !
    Alors franchement pour du générique, tu repasseras !

    Et encore une fois, je rappelle le contexte spécifique de mon côté (et je ne dois pas être le seul !) avec abcbourse :
    c'est l'un des deux seuls sites (enfin un autre indirectement pour une personne à l'étranger dans le même cas)
    où le readyState à l'ouverture d'IE souvent ne passe pas à l'état complet, reste bloqué à l'état précédent interactif …
    Qui plus est, pour d'autres sites où je n'ai pas ce problème mais dont l'état complet est long à arriver à cause de pubs
    par exemple alors que les éléments de la page sont présents bien avant l'état complet,
    détecter alors la présence d'un élément dans la page est une méthode accélérant donc le pilotage !
    Tu n'y adhères plus ? Aucun problème pour moi, attend le readyState complet mais au moins ma méthode a le mérite
    d'exister afin de contourner ce rare problème mais surtout pouvant réduire le temps d'exécution ! …


    Citation Envoyé par patricktoulon Voir le message
    derniere question : les deux invoke celle que tu utilise pas le string du bouton peut on faire la même chose pour "enregistrer"
    Vu la documentation d'UI Automation ce serait possible via la méthode FindAll pour renvoyer la collection des boutons …

    Edit : en fait Enregistrer n'est pas un bouton mais un SplitButton unique dans le bandeau, donc avec FindFirst
    Si la case Avertir lorsque le téléchargement est terminé est cochée dans l'onglet Avancé des options d'IE,
    après avoir déclenché le bouton Enregistrer le bandeau affiche les boutons Ouvrir le dossier et Afficher les téléchargements :
    voir la procédure IEAuto3 utilisant la méthode FindAll dans la nouvelle pièce jointe du post #162 !





    David, Patrick, et tout autre s'intéressant au sujet, voici la partie pouvant être intéressante !

    Rendons à César : la ligne de code n°35 en commentaire dans ma nouvelle pièce jointe du post #162
    est une autre méthode pour cliquer sur un bouton via du JScript comme l'a indiqué jurassic pork dans cette discussion !

    Or il y évoque aussi un moyen pour détecter si du JScript s'exécute en tâche de fond,
    ce qui pourrait donc éviter ici la temporisation avant de pouvoir ouvrir le fichier facilitant ainsi la synchronisation !
    Une piste à suivre donc mais je n'ai pas réussi avec son code sur différentes configurations …
    Utilisant la Barre d'état d'IE, vérifier déjà si elle est activée sinon son code plante forcément !
    Si vous réussissez, merci de votre retour et d'un code à jour en cas de modification …
    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. #167
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour à vous,

    et bien quelle discussion...

    Marc ton post #76 résume bien la situation ...et bravo pour ton idée et ta motivation pour contourner le probléme du plantage régulier, cela plante 1 fois sur 3 en tout automatique ici pour des raisons diverses comme tu l'indiques bien...depuis 1 an déjà maintenant!!! (mais aprés 2-3 relances ca marche, mais grâce à tes idées il semble donc possible que cela ne plante plus )
    le temps de regarder un peu tout ca (pas tout de suite cependant) et je te dis
    a bientôt

  8. #168
    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

    Salut itwoo !

    Effectivement on s'est un peu lâché depuis le post #76 !

    C'est grâce à David et Patrick la détection du bandeau de téléchargement réduisant pour beaucoup
    la fluctuation dans la réussite de la temporisation avant de déclencher le bouton …

    Patrick nous a sorti une version contrôle de la souris à partir du post #125 !

    De mon côté, voir aussi le post #94, le #104 avec une version s'auto-configurant au fur et à mesure pour la temporisation
    et le nouveau classeur de tests du post #162 avec une explication complémentaire dans l'édit en bas du post #166 …
    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. #169
    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
    bonjour tous les deux

    laché!!! tu dis Marc
    c'est une avancée majeure dans cet exercice
    que ce soit les sendkey ,uiautomation,souris
    on a jamais eu un taux de réussite aussi important et cela depuis plus de 3 ans quand même qu'on tourne autour
    je crois que l'on peut se féliciter et continuer

    j'aurais une question justement
    quand le bandeau est la le fichier est déjà créé ou c'est le bouton qui le créé
    si c'est déjà créé il me viens une idée
    plutôt que de titouiller le bouton pourquoi n'irions nous pas chercher ce fichier il doit bien avoir un lien (adresse)
    je sais pas c'est juste un truc qui me trotte dans la tète depuis 1 mois
    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

  10. #170
    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 De l'observation …


    Ne nous sommes pas bien lâchés depuis le post#76 : as-tu vu le nombre de posts à ce jour ?‼

    Côté SendKeys c'est encore par trop aléatoire, ce qui fonctionne de mon côté ne fonctionne pas chez toi …

    En observant l'apparition de la fenêtre de téléchargement sous Firefox, le bouton OK n'est pas disponible
    tout de suite, je suppose en tâche de fond s'exécute une procédure quelconque …

    C'est pour cela je trouve la piste de jurassic pork intéressante dans la discussion en lien dans le post #166.

    Quand le bouton Ouvrir sur IE ou OK sur Firefox est déclenché, tu as bien vu
    via l'outil d'inspection du navigateur le chargement des données via une requête !
    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. #171
    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
    si si ca fonctionne maintenant c'était juste une question d'administrateur
    et oui des que l'on touche au system 32 hein!!!!
    toutes nos versions fonctionnent
    avec le sendkey 1 bon 1 raté sur 3 ou 4 bon on va pas chippoter hein!!!
    ton model UI 1 et 2 puis le mien marchent a merveille
    c'est du rapido presto
    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. #172
    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 ne sais pas si tu as vu mais dans la nouvelle pièce jointe du post #162 je t'ai codé un exemple avec FindAll
    (procédure IEAuto3) avec une explication complémentaire dans l'édit en bas du post #166 …

    Sinon j'aimerais bien que tu jettes un œil au post de jurassic pork dans la discussion en lien, sait-on jamais !
    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. #173
    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



    Pour la procédure IEKeys2, je viens de m'apercevoir en comparant avec KeyLoop de la discussion d'origine

    qu'il manque un Sleep 100 entre la ligne du Focus et celle du SendKeys !

    Même si de mon côté cela fonctionne sans, sait-on jamais … (Ne pouvant plus modifier le post #162)
    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. #174
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    vous vous êtes totalement lachés comme des bêtes tu veux dire
    oui c'est formidable...
    il me faut juste un peu de temps pour finir ce qui est en cours (des mises à jour des modifications...) et je regarde tout ca, mais c'est sûr que c'est extra ce que vous avez fait...
    c'est même TIP TOP
    bon WE

  15. #175
    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



    Bon je vais te laisser le temps de digérer avant la version du téléchargement EuroNext piloté via Firefox
    sans temporisation, ni Wait ni Sleep, car comme je l'ai pressenti la disponibilité du bouton OK de la
    fenêtre de téléchargement de Firefox est bien détectable en utilisant la bibliothèque UI Automation !

    Si tu n'utilises pas Firefox, cela pourrait faire l'objet d'une nouvelle contribution vu la taille de celle-ci …
    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. #176
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Oui Marc laisse moi un peu de temps stp, j'ai repris depuis le début et je me rends compte uniquement maintenant de la vrai puissance de ton code et de sa struture (je croyais avoir compris mais non ce n'est que maintenant!!!)...surtout en étudiant tout suis au post 38, je te fais signe dès que suis là...
    J'ai bien aussi Firefox

    Pat:
    Tes APIs du post 38 mais où vas tu trouver tout cela, BRAVO!!! c'est pas croyable
    pour info dans ton post 38 tu n'as pas mis le focus, j'ai essayé avec mais ca n'a pas voulu marcher non plus...peut être l'avez vous dit plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Document.all(EG).Click
    cela dit même en faisant cela ca n'a pas marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .Document.all(EG): .Focus: .Click: End With
    et ton post 39 je ne sais pas ce qu'il se passe mais voici le message:


    lecture en cours...
    PS: si vous savez répondre à mes 3 questions (pas super tip top) sur ma discussion Help graphique ca m'aiderait bien pour pouvoir finir ici plus vite...
    Images attachées Images attachées  

  17. #177
    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




    itwoo,

    fait un bon dans la modernité, saute directement au post #76 !
    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. #178
    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
    itwoo
    tu progresse mais nous aussi sauf que l'on avait pas mal d'avance sur toi
    marc te propose de sauter les etapes non pas pour seulement accelerer mais aussi par ce que nous avons trouvé de nouvelle solution et evolué en fonction des versions de IE
    a l'epoque ou nous bricolions ensemble on avait pas tout les contraintes que nous avons aujourd'hui
    alors bombarde passe quelque page

    ps:
    ou je vais chercher tout ca ,
    et bien je cherche ,je plante IE parfois exel ,je perds des cheveux,je pleure ma race quand je suis bloqué

    bref tu le comprends bien marc et moi bossons pour les retardataires comme toi
    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. #179
    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

    Comme Patrick, je lis, je teste, je plante même Windows, parfois je laisse le bouzin de côté
    puis je recommence et soit de nouveau je fais face à un échec voire même de nouveau mon Seven pleure
    ou soit enfin je débouche sur une solution acceptable …

    A propos d'UI Automation, même combat que pour IE, un code fonctionnant sous Seven peut échouer sous Windows 8 !
    C'était le cas de mon premier jet pilotant Euronext sous Firefox pourtant à 100% de réussite sous Seven.

    Ensuite j'ai tout refondu pour avoir une réussite à 99,99% sous Windows 8.1 et 100% sous Seven
    (hormis le souci du site se mettant à ramer énormément mais cela est paramétrable).
    Depuis j'ai simplifié l'appel dans la procédure principale via une procédure autonome
    afin qu'un néophyte puisse l'utiliser telle quelle sans faire bouillir son cerveau,
    fonctionnant à 100% sous Seven mais je dois encore procéder aux tests sous Windows 8.1 …

    Après des tests sous Seven et IE9 contre Firefox 47,
    piloter Euronext sous Firefox avec UI Automation ne s'avère pas plus rapide qu'un pilotage classique d'IE9.
    L'avantage de Firefox est s'il est déjà ouvert, comparativement à une nouvelle instance systématique d'IE,
    il peut parfois égaler IE9 (fermé lui) mais pas toujours et parfois même le devancer, le cache jouant aussi …
    L'autre avantage indéniable est la détectabilité de la disponibilité du bouton OK de la fenêtre de téléchargement
    contrairement à IE où il faut lui imposer une temporisation avant de pouvoir déclencher l'ouverture …

    Sous Windows 8.1, je comparerais avec IE11 … Sinon voici une visualisation d'Euronext via Firefox
    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. #180
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    OK OK

    Oui oui pas de probléme je suis bien sur le post 76 (j'ai déjà voté pour lui Marc car il est vraiment formidable) mais désolé pour l'analyser et le comprendre (ou tout du moins essayer ) notamment les Function FindWindowExA& je suis remonté au départ post38 et suivant...et pour le moment j'ai du mal (ce n'est pas pour vous retarder mais pour essayer de suivre et j'ai du mal pour le moment...)

    et sur le post 39, 40 (alors que rien avant par exemple en post 38) j'avais une question qui m'intriguait sur la puissance du Focus de Marc...(comme dit plus haut je croyais avoir compris mais non je n'ai pas tout compris...)
    par exemple si le code du post 39 contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Document.all(EG).Click
    le message identification du site web apparait
    alors que si:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .Document.all(EG): .Focus: .Click: End With
    pas de message
    et bien ca je ne me l'explique pas du tout...bon allez c'est pas grave je continue c'est pas l'essentiel

    Suis au taquet pour vous suivre mais je rame (là c'est pas le site c'est moi )

Discussions similaires

  1. Forcer l'ouverture d'un fichier avec Excel
    Par Cda01 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2011, 15h47
  2. [XL-2003] Ouverture d'un fichier par excel en 3 exemplaires
    Par basto dans le forum Excel
    Réponses: 1
    Dernier message: 25/08/2009, 17h05
  3. ouverture d'un fichier avec excel sous vs.net 2003
    Par lesultan2007 dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/07/2009, 15h46
  4. Telecharger un fichier excel depuis le web via PERL
    Par ptimos93800 dans le forum Web
    Réponses: 3
    Dernier message: 19/03/2009, 18h38
  5. [vbexcel]automatiser l'ouverture d'un fichier
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2005, 17h33

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