J'ai oublié initialement de préciser : j'effectue principalement des tests sous Seven et IE9,
la version d'Excel ne rentrant quasiment pas en ligne de compte.
Le code ne devrait pas poser de problème pour les versions plus récentes d'IE
mais pourrait ne pas fonctionner tel quel avec les versions antérieures …
Deuxième étape : le pilotage d'Internet Explorer avec confirmation automatique d'ouverture du fichier.
Cette astuce est née de l'observation suite à une erreur de manipulation et aussi au coup de chance
d'avoir basculé de Firefox vers IE juste pour tester car, en restant sous Firefox, je n'aurais rien vu …
Vis à vis du code de l'étape précédente, il manque juste la simulation de la frappe au clavier afin de confirmer l'ouverture.
(L'autre voie serait de simuler le click sur le bouton, au moins deux méthodes mais moins simples à mettre en œuvre …)
Oui itwoo, il est bien question de SendKeys mais beaucoup restent au pied de ce mur à franchir …
Observation : le focus peut être déplacé grâce à la touche de tabulation.
Soit calculer le nombre de tabulation nécessaire pour se positionner sur le bouton Ouvrir
soit un peu plus finement donner le focus à un élément de la page principale au plus près du bandeau …
Modifications du code de l'étape précédente :
• Ligne n°20 : With .Document.all(EG): .Focus: .Click: End With (conserver l'indentation pour la lisibilité)
En pilotant Internet Explorer, cliquer sur un bouton ne lui donne pas forcément le focus. Maintenant, c'est fait …
• Ligne n°21 : élévation du temps de pause à 0.00011 …
C'est le point le plus sensible dans l'automatisme désiré ! Manuellement après le click sur le bouton Go,
il faut observer le temps moyen avant l'apparition du bandeau pour la confirmation du téléchargement.
Ce temps varie selon la puissance de l'ordinateur, la célérité du réseau et surtout celle du site !
Depuis une quinzaine le site Euronext est plus lent, nécessitant donc d'augmenter cette pause …
Pour ceux pas doués avec l'arithmétique, consulter alors l'exemple de l'aide VBA de la méthode Wait
afin d'ajouter un temps exprimé en secondes …
Pour les autres, l'unité de temps "1" d'Excel vaut un jour, soit 24h x 60mn x 60s = 86 400 secondes.
Par exemple une pause de 0.00008 est environ égale à 7 secondes (.00008 x 86400) …
• La ligne vide n°22 devient CreateObject("WScript.Shell").SendKeys "{Tab 2}~" …
Grâce à la ligne n°20 donnant le focus au bouton Go, il suffit juste de deux touches de tabulation
puis la touche Entrée pour confirmer l'ouverture du fichier.
VBA dispose aussi d'une instruction SendKeys mais elle a la fâcheuse tendance à désactiver
le verrouillage numérique du clavier ! D'où ma préférence d'utiliser un ActiveX …
• La ligne vide n°23 devient Application.Wait Now + 0.00001 …
Sans cette pause inférieure à une seconde, le fichier ne s'ouvre pas !
• La ligne n°25 est réduite à Beep (voir la modification suivante)
• La ligne vide n°28 devient .Quit: AppActivate Application.Caption …
Comme c'est une version automatique, pas besoin de conserver la fenêtre d'IE !
L'instruction AppActivate ne doit plus être nécessaire à partir de la version 2007 d'Excel …
• Suite à cette dernière modification, les lignes n°63 à 66 deviennent inutiles, à supprimer !
• Tout comme les lignes n°34 & 35, la variable objet oWin n'étant plus utilisée …
• Enfin, la constante URL n'apparaissant plus que dans la procédure DemoEuroNextCSV,
la ligne n°1 peut être déplacée dans l'entête de cette procédure …
Lors de vos tests, si le fichier n'est pas ouvert, augmenter alors la pause de la ligne n°21 …
Il est aussi possible que ce temps de pause ne soit plus suffisant lorsque le site rame,
ma préférence allant alors au code de la version semi-automatique …
itwoo, j'attends ton retour (t'en es-tu sorti, quelle pause en ligne 21 ?) avant de publier l'ultime étape bonus !
_________________________________________________________________________________________________
Le progrès : trop robot pour être vrai. (Jacques Prévert)
Partager