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. #121
    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
    @davido
    a oui pardon je sais pour quoi
    pour des raison de facilité et au cas ou il y aurait des difficulté a mettre le bandeau séparé de IE au premier plan je l'ai affilié en tant qu'enfant de l'application pour mes essais

    mais en fait il faut remplacer "Application.hwnd " par le desktop "'GetDesktopWindow " c'était déjà prevu dans la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SetParent hwndIEedge, Application.hwnd    'GetDesktopWindow    ' on change le parent pour le bureau
    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. #122
    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 :

    Citation Envoyé par Marc-L Voir le message
    (Tu dois être en 96 ppp ?)
    Oui, non ?
    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. #123
    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
    c'est tout ce que j'ai comme renseignement
    Nom : Capture.JPG
Affichages : 393
Taille : 124,8 Ko
    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. #124
    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 je l'avais pourtant détaillé, en dessous du % on voit que tu es à 120 pixels par pouces,
    comme sur le portable de mon côté ne fonctionnant pas avec tes codes ! Celui fonctionnant est en 96 ppp.
    J'étais pourtant quasi sûr la densité était la cause des différences entre les ordinateurs …

    Autre piste peut-être du côté de la résolution de la souris, comment la sensibilité est réglée, etc …

    Un jour plusieurs m'avaient dit : « Laisse tomber la souris, le clavier est bien plus facile à gérer ! »
    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. #125
    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
    Marc je viens d'essayer ce code sur
    pc salon W7 IE11 ecran TV
    pc portable W 7 IE 11 resolution 1380/760 96 ppp
    pc notebook 10 pouce W 7 stater
    et tous avec off 2007 32 bits
    et les 3 fonctionnent
    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
    87
    88
    89
    90
    91
    92
    Dim t!
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    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 SWL Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public IE As Object
    Type RECT
         Left As Long
         Top As Long
         Right As Long
         Bottom As Long
     End Type
    Sub Demo2()
        Const ELT = "ctl00_BodyABC_Button1"
        Dim Wb As Workbook, r As RECT
        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
                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
             HieFrame = FindWindow("IEFrame", vbNullString)
            BringWindowToTop HieFrame
           .Visible = True
           Sleep 1000
            Do
                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 = 10000
     
    GetWindowRect hwndIEedge, r
     
            Do
                DoEvents: i = i + 1
                X = r.Right - (5 * i): Y = r.Bottom - (2 * i)
                SetCursorPos X, Y    ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
               If couleur = 16777215 Then c = True
     
            Loop Until c = True And couleur <> 16777215 Or i > 50 'jusqu'a que la couleur soit differente de blanc  ou a 10 de la fin du bandeau
    i = 0
            Do
                DoEvents
                i = i + 50
                X = r.Left + i:
                SetCursorPos X, Y - 4  ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
                Debug.Print couleur
                'Sleep 200
            Loop Until (couleur <> 16777215) Or X > r.Right 'jusqu'a que la couleur soit differente de blanc  ou a  la fin du bandeau
            SetCursorPos X + 10, Y    ' on ajoute 10 a X  pour etre bien dans le bouton
            mouse_event &H2, 0, 0, 0, 0
            mouse_event &H4, 0, 0, 0, 0
            ' le fond de la fenetre est blanc =16777215
            'la couleur du bouton over=16576741
    Fin:
            If X > r.Right Then BringWindowToTop hwndIEedge: Beep: MsgBox "beep beep n'a pas trouvé le bouton " & vbCrLf & "vous pouvez néammoins cliquer dessus manuellement "
    BringWindowToTop hwndIEedge
        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
        End If
    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

  6. #126
    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,

    ce dernier code a fonctionné du premier coup sur les deux configurations sous le coude !

    Attendons un retour de David (et d'autres, ne pas hésiter !) …

    Je n'ai pas détaillé, en gros tu as changé d'approche ou trouvé une astuce ? Explique !

    Edit : à partir du troisième essai sur IE11, ne fonctionne plus, le curseur par vers le coin supérieur gauche de l'écran !
    Cela s'est produit après avoir fermé les deux instances d'IE11 restées ouvertes.
    J'ai fermé Excel puis réitérer la même séquence : deux essais réussis, fermeture manuelle des instances
    et nouveaux tests en échec !

    Pas de souci après plusieurs essais sur la première configuration sous IE9 même après fermeture manuelle des instances …

    Après avoir fermé IE11 manuellement et avoir patienté presque une minute (1) : aucun souci.
    David, dis-nous si tu constates aussi ce phénomène …

    (1) En fait après fermeture manuelle des instances, il y a un souci si lancement immédiat de la procédure
    mais tout va bien si elle est lancée après quelques secondes … Pourtant pas de résiduel d'IE11 en mémoire.
    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. #127
    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
    alors oui l'astuce est très simple
    avant je partais d'en haut a droite du bandeau et des que je tombais sur un bouton j'avais mon top
    probleme!:
    selon le "ppp" le texte prend plus ou moins de place

    ainsi aussi qu'avec la fenêtre IE réduite en largeur modifie l'emplacement des boutons et du texte

    alors que finalement on sait que :

    en dessous les boutons il n'y a absolument rien d'autre !! dans n'importe quelle configuration

    donc allons y partons d'en bas a droite en diagonale vers la gauche afin de tomber sur un des boutons

    une fois trouver on a notre top qui correspond au max a i* la valeur
    ce qui fait que maintenant on repart de la gauche donc x= le debut de bandeau + 10 pour être déjà dans le blanc et toujours le même Y et on incrémente X
    et cela tant que le pixel en dessous le curseur est blanc on ne peut plus tomber sur du texte

    car le test pour la recherche c' est la couleur blanche du fond qui est universelle et qui devient orange feu après un petit moment que le curseur soit en dehors de ce bandeau

    apres oui moi aussi j'ai eu un raté sur 40 essais d'affilé je dis bien
    pourquoi
    visiblement il faut un temps entre l'obtention du handle(en long) et sa présence réelle dans l'affichage a l'écran donc rate pour le premier captage

    j'ai donc refait les test plus doucement avec un sleep 500 entre chaque requêtes et 100% reussite

    2 eme raison des éventuelles ratés
    des fois même avec l'api bringwindototop IE 11 reste en arrière plan et se met en avant après le 1 er tour de boucle
    par contre pas de soucis avec IE 9 portable
    la aussi raté
    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

  8. #128
    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
    regarde j'avais raison c'est bien un soucis de mémoire graphique

    bloque le sleep en ligne 51 et ben ca marche plus

    pourtant IE est là depuis le debut donc son handle est disponible depuis son l'ouverture


    parfois même quand je le fait plusieurs dizaine de fois d'affilé au bout d'un momment 500 n'est plus assez


    on pourrait croire que c'est parce qu'il y a décrochage ,mais pourtant non j'ai essayé de déplacer le sleep après (avant le do/loop ce qui serait plus logique ) et bien ca marche pas non plus

    il faut vraiment un temps d'attente avant d'avoir le handle HIEFRAME

    bien que pourtant si je met un msgbox avant le sleep ,j'ai bien le handle dans le message mais peut être pas son contexte (propertie)

    après on peut se dire que c'est normal la user32.dll et la shell.dll sont toute deux les dll d'affichage Windows donc utilise certainement de la mémoire graphique

    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
    87
    88
    Dim t!
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    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 SWL Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public IE As Object
    Type RECT
         Left As Long
         Top As Long
         Right As Long
         Bottom As Long
     End Type
    Sub Demo2()
        Const ELT = "ctl00_BodyABC_Button1"
        Dim Wb As Workbook, r As RECT
        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
                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
             .Visible = True
             hieframe = FindWindow("IEFrame", vbNullString)
            BringWindowToTop hieframe
           .Visible = True
          Sleep 500
            Do
                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
     
     
    GetWindowRect hwndIEedge, r
         ' BringWindowToTop HieFrame
            Do
               BringWindowToTop hieframe
           DoEvents: i = i + 1
                X = r.Right - (4 * i): Y = r.Bottom - (2 * i)
                SetCursorPos X, Y    ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
               If couleur = 16777215 Then c = True
     
            Loop Until c = True And couleur <> 16777215 Or i > 50 'jusqu'a que la couleur soit differente de blanc  ou a 10 de la fin du bandeau
    i = 0
            Do
                DoEvents
                i = i + 50
                X = r.Left + i:
                SetCursorPos X, Y - 4  ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
                Debug.Print couleur
                'Sleep 200
            Loop Until (couleur <> 16777215) Or X > r.Right 'jusqu'a que la couleur soit differente de blanc  ou a  la fin du bandeau
            SetCursorPos X + 10, Y    ' on ajoute 10 a X  pour etre bien dans le bouton
            mouse_event &H2, 0, 0, 0, 0
            mouse_event &H4, 0, 0, 0, 0
            ' le fond de la fenetre est blanc =16777215
            'la couleur du bouton over=16576741
    Fin:
            If X > r.Right Then Beep: MsgBox "beep beep n'a pas trouvé le bouton " & vbCrLf & "vous pouvez néammoins cliquer dessus manuellement "
    BringWindowToTop hwndIEedge
        End With
    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

  9. #129
    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 Patrick !

    Je ne comprends vraiment pas pourquoi tu cherches le handle d'Internet Explorer
    alors qu'il est déjà disponible au sein de ta variable IE via sa propriété HWND !

    Comme tu peux déjà le constater dans mes précédents codes de cette discussion,
    je cherche uniquement le handle du bandeau vu que j'ai déjà celui d'IE …
    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)

  10. #130
    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
    je vais tester voir si ca change quelque chose
    ensuite j'ai trouvé un moyen non bloquant( comme un do/loop) pour me passer de workbook deactivate
    et sans nommer avec like ou autre le classeur éventuel attendu

    je reviens avec la version finale
    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

  11. #131
    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 version finale compact
    re
    voila j'ai essayé IE.nwnd ca me supprime pas le besoins du sleep je crois même que c'est plus long

    bon ca peut supprimer une déclaration d'api "findwindow" c'est toujours ca de gagnié

    ensuite j'attire ton attention sur mon remplacement du workbook_deactivate par la fonction "fermIE"

    je l'appele en fin de navigation et manip du bandeau par application .ontime qui n'est pas bloquant comme un do/loop

    j'ai supprimer ton" like cotation ......." et remplace par le test diffèrent de thisworkbook.name

    de ce fait la fonction est universelle

    je vais pouvoir maintenant séparer la partie bandeau de la partie IE ce qui pour le coup la rend complètement universelle
    tu pourrais utiliser le même stratagème que "fermeIE" après ton uiautomation

    la fonction fermeIE va jusqu'à 4 tentative ce qui fait 4 seconde largement suffisant pour laisser se loader et s'afficher le classeur attendu

    les variable "TTVE"(tentative) et IE (object internet explorer) doivent être dimer en haut de module pour leur disponibilité

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    Option Explicit
    Dim t!
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    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 SWL Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public IE As Object
    Dim TTVE As Long
    Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Sub Demo2()
        Const ELT = "ctl00_BodyABC_Button1"
        Dim Wb As Workbook, r As RECT, HIEFRAME As Long, i As Long, hwndIEedge As Long, X As Long, Y As Long, couleur As Long, c As Boolean
        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
                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
            .Visible = True
            HIEFRAME = IE.hwnd 'FindWindow("IEFrame", vbNullString)
             .Visible = True
            BringWindowToTop IE.hwnd
           Sleep 500
            Do
                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
     
            GetWindowRect hwndIEedge, r
            ' BringWindowToTop HieFrame
            Do
                BringWindowToTop HIEFRAME
                DoEvents: i = i + 1
                X = r.Right - (4 * i): Y = r.Bottom - (2 * i)
                SetCursorPos X, Y    ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
                If couleur = 16777215 Then c = True
            Loop Until c = True And couleur <> 16777215 Or i > 50    'jusqu'a que la couleur soit differente de blanc  ou a 10 de la fin du bandeau
            i = 0
            Do
                DoEvents
                i = i + 50
                X = r.Left + i:
                SetCursorPos X, Y - 4  ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
                couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
                Debug.Print couleur
                'Sleep 200
            Loop Until (couleur <> 16777215) Or X > r.Right    'jusqu'a que la couleur soit differente de blanc  ou a  la fin du bandeau
            SetCursorPos X + 10, Y    ' on ajoute 10 a X  pour etre bien dans le bouton
            mouse_event &H2, 0, 0, 0, 0
            mouse_event &H4, 0, 0, 0, 0
            ' le fond de la fenetre est blanc =16777215
            'la couleur du bouton over=16576741
            TTVE = 0
            Application.OnTime Now + TimeValue("00:00:01"), "fermeIE"
    Fin:
            If X > r.Right Then Beep: MsgBox "beep beep n'a pas trouvé le bouton " & vbCrLf & "vous pouvez néammoins cliquer dessus manuellement "
            BringWindowToTop hwndIEedge
        End With
    End Sub
    Private Sub fermeIE()
        If TTVE < 4 Then
            If ActiveWorkbook.Name <> ThisWorkbook.Name Then
                IE.Quit: TTVE = TTVE + 1
            Else
                Application.OnTime Now + TimeValue("00:00:01"), "fermeIE"
            End If
        Else
            MsgBox "le telechargement n'a pas éte effectué"
        End If
    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

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


    Le problème est simple : dès l'apparition du bandeau le téléchargement n'est pas encore prêt !
    Une temporisation est nécessaire comme on peut le constater avec Firefox ouvrant une fenêtre
    de téléchargement à valider par un bouton OK : ce dernier est grisé un instant …

    En pilotant IE selon les performances du processeur, de la connexion, du site, si la grand-mère a gonflé les pneus du vélo,
    bref cette temporisation est variable d'un ordinateur à un autre ou d'un emplacement à un autre (bureau ou domicile) …

    Là tu as fait face à un souci supplémentaire lié à l'utilisation des API pour gérer fenêtres et souris.

    En corrigeant ton précédent code du post #125 (ta pause d'1s étant raisonnable), IE se ferme déjà bien automatiquement …
    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. #133
    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
    Ok donc mon sleep est vraiment indispensable

    après oui les apis mais que veux tu j'ai pas encore compris pourquoi mon fichier garde pas uiautomation je pense que c'est mon anti virus qui fait des siennes


    après oui il se fermait déjà automatiquement mais par le workbook_deactivate et je voulais absolument m'en passer

    pour ne pas avoir a refaire (ajouter l'évènement) dans le thisworkbook pour le prochain besoins

    tout est dans le module standard c'est comme les marseillais et leur "MONDIALETTE" cé youniversal!!!

    d'autant plus que dans fermeIE on peut paramétrer tout cas de figure ,pas dans le workbook_deactivate puisqu'il se déclenche qu'a partir du moment ou le classeur est la

    si une erreur ou un raté c'est produit walouh!!!! tandis que dans une sub ou fonction on peut tout envisager surtout qu'elle est non bloquante


    PS: en bricolant avec ma souris et les apis , par hasard!!!!!! j'ai peut être réussi a trouver le moyen d' identifier le bouton chose que l'on ne trouvait pas

    je potasse ce phénomène et te donne des nouvelles

    je vais vérifier aussi ce purée de uiautomation voir si je peut pas mettre une exception dans l'anti virus
    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. #134
    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
    @ Marc
    comment fait -on pour avoir l'object quand on est dans une créations anonyme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with createobject("internetexplorer.application")..blablabla... end with
    dans ce with je voudrais faire la manip inverse c'est a dire:

    set IE=l'Object lui même

    c'est possible cela?????????

    j'ai essayé

    .document.parentWindow >>>>niet!!!
    .object >>>>niet!!!
    .parentwindow.application >>>> niet!!!
    .parent.object >>>>niet!!!

    une idée???
    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. #135
    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


    L'histoire de fermer IE via l'évènement est due à une interaction entre Excel et IE
    renforcée depuis la version IE11, c'te blague !

    Si VBA tourne pendant la tentative d'échange, subsiste alors un résiduel d'IE11 …
    C'est vrai on peut s'en moquer avec ma manière d'affecter IE à une variable objet
    dans une boucle en cas d'erreur.


    Pour l'objet, pas mieux que la variable objet avant un With IE ou sans …
    Y-a-pas .Document.Parent ou quelque chose dans le genre ?
    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. #136
    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
    ben je sais qu'avec l'object("htmlfile" (documentHTML) en mémoire on a ".parentWindow" puis par exemple ".clipboard" pour en atteindre le clipboard

    je pensait que qu'avec IE c'était pareil

    j'ai besoins de cela car le code de ta demo2 que j'utilise pour la navigation dans mon exemple utilise la création anonyme et donc cerclé dans son with

    j'ai corrigé en fesant
    set IE=createobject("internetexplorer.application") et with IE.....

    mais j'aimerais bien encore une fois pour une universalité pourvoir remonter a l'object au cas ou l'utilisateur naviguerait en object anonyme comme tu le fait a l'origine dans demo2
    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. #137
    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
    Test du code #131 : pas de problème sur une dizaine d'essais.
    Les infos sont bien téléchargées et IE se ferme correctement. Pas de résiduel d'IE constaté dans le gestionnaire des tâches.
    A+

  18. #138
    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,

    sauf erreur de ma part, je ne pense pas que l'on puisse remonter à IE
    depuis un objet DOM car il est indépendant du navigateur …

    C'est comme transférer une valise d'un car vers une voiture : peu importe le véhicule, la valise est transportée !


    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)

  19. #139
    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
    ok c'est assez étonnant qu'avec l'object("htmlfile") on puissent le faire

    bon voila ou j'en suis j'ai bien séparer le bandeau de la navigation

    pour les test
    remplace "-4" dans la ligne 81 par "+6" pour raté volontairement le bouton

    je te laisse observer les réactions

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    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
    Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public IE As Object
    Dim TTVE As Long
    Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Sub Demo2()
        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 "<a href="http://www.abcbourse.com/download/historiques.aspx" target="_blank">http://www.abcbourse.com/download/historiques.aspx</a>"
            .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!!"
            bandeau IE
            'ou si on est dans un object anonyme "bandeau .document.parent"
            'bandeau .document.parentWindow.Object
        End With
        Exit Sub
    Fin:
        On Error GoTo 0
        Beep
        MsgBox mess
    End Sub
     
    Function bandeau(IE)
        Dim r As RECT, HIEFRAME As Long, i As Long, hwndIEedge As Long, X As Long, Y As Long, couleur As Long, c As Boolean
        HIEFRAME = IE.hwnd    'FindWindow("IEFrame", vbNullString)
        IE.Visible = True: BringWindowToTop IE.hwnd
        Sleep 1000
        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: GetWindowRect hwndIEedge, r
        Do ' recherche du top souris
        DoEvents: i = i + 1: X = r.Right - (4 * i): Y = r.Bottom - (2 * i)
            SetCursorPos X, Y    ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
            couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
            If couleur = 16777215 Then c = True
        Loop Until c = True And couleur <> 16777215 Or i > 50    'jusqu'a que la couleur soit differente de blanc  ou a 10 de la fin du bandeau
        i = 0
        Do ' recherche du bouton "ouvrir"
        DoEvents: i = i + 50: X = r.Left + i:
            SetCursorPos X, Y - 4    ' on fait bouger le curseur dans le bandeau  ca permet que son fond reste blanc
            couleur = GetPixel(GetDC(0), X, Y)    'on capte la couleur du point X/Y
        Loop Until (couleur <> 16777215) Or X > r.Right    'jusqu'a que la couleur soit differente de blanc  ou a  la fin du bandeau
        SetCursorPos X + 10, Y - 4    ' on ajoute 10 a X  pour etre bien dans le bouton
        mouse_event &H2, 0, 0, 0, 0 'on click
        mouse_event &H4, 0, 0, 0, 0 ' on relache la souris
        TTVE = 0: Application.OnTime Now + TimeValue("00:00:01"), "fermeIE" 'on va fermer IE
        IE.Visible = False
    End Function
    Private Sub fermeIE()
        If TTVE < 2 Then
            TTVE = TTVE + 1
            If ActiveWorkbook.Name <> ThisWorkbook.Name Then
                IE.Quit
            Else
                Application.OnTime Now + TimeValue("00:00:01"), "fermeIE"
            End If
        Else
            Cells(1, 1).Select
            IE.Quit
            MsgBox "le telechargement n'a pas éte effectué" & vbCrLf & "la souris a pété la queue  de travers ce qui l'a décalé"
        End If
    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

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




    Tests OK sur IE9, je verrais plus tard pour 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)

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