IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Télécharger et enregistrer sous un fichier Excel dans IE9 Windows 7


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut Télécharger et enregistrer sous un fichier Excel dans IE9 Windows 7
    Bonjour à tous,
    J'ai crée une Macro qui se connectait à IE8 entrait un login et un mot de passe, remplissait les champs demandés, cliquait sur un bouton OK dans la page HTML pour telecharger le fichier correspondant puis enregistrait le fichier telechargé sous un autre nom dans un dossier. Cette Macro fonctionnait parfaitement sous IE 8 et windows XP.
    Or mon système d'exploitation a été changé et du coup les fonctions SENDKEYS que j'utilisais ne fonctionnent plus.
    En effet lorsque la boite de telechargement IE9 apparait en bas de l'écran j'ai l'impression qu'elle n'est pas active et elle se met à clignoter...
    Je sais que la question a du être évoquée maintes fois mais la je bloque dans mes recherches
    Voici mon code
    Pour information je n'ai bien sur pas mis les logins et mdp de l'intranet pour des raisons évidentes
    Un grand Merci


    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Sub CMF()
     
    Dim IE As Object
    Dim IEDoc As HTMLDocument
    Dim InputZoneTexte As HTMLInputElement
    Dim InputBouton As HTMLInputElement
    Dim htmlTagCol As IHTMLElementCollection
    Dim htmlSelectElem As HTMLSelectElement
    Dim FormCherche As HTMLFormElement
    Dim divHTMLCible As HTMLDivElement
     
     
    'Initialisation des variables
       Set IE = CreateObject("InternetExplorer.Application")
       'Chargement d'une page Web Google
       IE.navigate "http://62.50.134.58/intranet/exploitation/slxsm/slx_gen_report.asp?Action=Criteria&ID=841"
     
       'Affichage de la fenêtre IE
       IE.Visible = False
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le membre Document
       Set IEDoc = IE.document
         'On va sur l'objet qui contient la liste des indices
       Set htmlSelectElem = IEDoc.all("[AIRPORT]")
     
       'On sélectionne l'indice "aer" via sa valeur unique
       htmlSelectElem.Value = "CMF"
     
     
     
     
     'On pointe le membre Document
       Set IEDoc = IE.document
         'On va sur l'objet qui contient la liste des indices
       Set htmlSelectElem = IEDoc.all("[SEASON]")
     
       'On sélectionne l'indice "season" via sa valeur unique
       htmlSelectElem.Value = "W14"
     
       'On pointe notre Zone de texte
       Set InputZoneTexte = IEDoc.all("[DATEDEB]")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
     
     
     
       InputZoneTexte.Value = Range("A1").Value
     
     
       'On pointe notre Zone de texte
       Set InputZoneTexte = IEDoc.all("[DATEFIN]")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
       InputZoneTexte.Value = Range("B1").Value
     
     
     
     
        For Each SubmitInput In IEDoc.getElementsByTagName("INPUT")
    'on cherche le bouton de validation
    If InStr(SubmitInput.getAttribute("name"), "launch") Then
    SubmitInput.Click
    'une fois trouve on lance un clic
    Application.Wait Time + TimeSerial(0, 0, 3)
    'on attend la generation du fichier
    End If
    Next
    Application.Wait Time + TimeSerial(0, 0, 4)
     
    Application.SendKeys "{TAB}"
    'on passe sur le bouton enregistrer
    Application.Wait Time + TimeSerial(0, 0, 1)
    Application.SendKeys "{TAB}"
    Application.Wait Time + TimeSerial(0, 0, 1)
    Application.SendKeys "{TAB}"
    Application.Wait Time + TimeSerial(0, 0, 1)
    Application.SendKeys "{ENTER}"
    'on valide
         Application.Wait Time + TimeSerial(0, 0, 5)
     
             Application.SendKeys "{BACKSPACE}"
                Application.SendKeys "J:\Svc_Expl\SUB_CT\FMP\Hiver 2014-2015\semaine XX\CMF"
     
            Application.Wait Time + TimeSerial(0, 0, 4)
            Application.SendKeys "{ENTER}"
     Application.Wait Time + TimeSerial(0, 0, 2)
            Application.SendKeys "{TAB}"
     
             Application.Wait Time + TimeSerial(0, 0, 3)
            Application.SendKeys "{ENTER}"
     
    Application.Wait Time + TimeSerial(0, 0, 2)
            Application.SendKeys "{ENTER}"
    'on valide
    WaitIE IE
     
     
     
     
     
    'on valide
    WaitIE IE
     
     
     
     
     
      'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
     
    End Sub

  2. #2
    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 674
    Points
    18 674
    Par défaut


    Bonjour,

    dans le sous forum d'Excel Contribuez,
    commencer par Automatiser l'ouverture d'un fichier compatible Excel depuis le Web (téléchargement)

    Il y a aussi dans la dll Windows Urlmon la fonction URLDownloadToFileA, à consulter sur le site MSDN …

    Consulter le tutoriel VBA et développement Web


    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marc-L
    Merci pour ta réponse, j'avais effectivement vu ton tuto mais je n'arrive pas à l'adapter à ma macro...
    Si tu avais le temps de voir ce qui plante ça me rendrait un bien grand service!!
    En tous cas merci encore d'avoir pris le temps de jeter un œil à mon problème!!

  4. #4
    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 674
    Points
    18 674
    Par défaut




    Comment pourrais-je voir quelque chose sur le réseau privé de ton entreprise ?! Désolé …

    La première étape de la contribution est née de l'observation : suffit juste de voir comment se comporte la page …

    Le mieux et le plus fiable étant de ne pas piloter Internet Explorer !
    Voir dans un navigateur la requête utilisée ou sinon utiliser la fonction Windows.

    Sinon voir du côté de l'outil Selenium VBA devant disposer de son propre forum …

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour marc
    Cela fait 3 jours maintenant que je suis sur cette page...
    Mon problème est le suivant lorsque la barre de notification enregistrer ouvrir et annuler apparaît je n'arrive pas avec mes sendkeys a lancer le enregistrer sous
    J'aurais juste besoin de contourner cela ou de trouver l'instruction qui me permette de controler cette boite de téléchargement
    J'ai essayé avec selenium, mais le code vba que transcrit l'enregistreur ne marche pas sous excel vba
    C'est donc pour ca que je te demandais de jeter un oeil juste pour savoir pourquoi je n'arrivais pas a controler cette barre de téléchargement
    C'est le cas pour n'importe quel fichier que je souhaiterais télécharger de n'importe quel site
    Merci pour ton aide!

  6. #6
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Re!
    Utiliser la fonction windows
    Pourrais tu detailler s'il te plaît ?
    Merci

  7. #7
    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 674
    Points
    18 674
    Par défaut


    Celle déjà indiquée dans le post #2, faire une recherche sur ce forum sinon à coup sûr sur le net …

    Le tutoriel indique une autre méthode.

    Pour les SendKeys, c'est simple : comme dans la contribution il faut temporiser la procédure
    afin de la synchroniser avec la lenteur du navigateur, ne pas mettre la charrue avant les bœufs !
    Donc en observant lors d'une navigation manuelle …

    Sinon une procédure semi-automatique comme dans la contribution est la plus fiable …

    Quant à Selenium, il a justement été conçu pour cela ! Mais comme tu débutes …

  8. #8
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Re-bonjour Marc
    Pour les SENDKEYS, le problème n'est pas le timing mais plus d'activer la fenêtre de téléchargement pour ensuite envoyer mes TAB et pouvoir enregistrer sous le fichier.
    C'est mon seul problème.
    Tu as raison je débute et cet environnement est très loin de ma partie mais j'ai besoin de ce script pour récupérer ces informations
    Voila!
    En tous cas merci de prendre le temps de me répondre :-)
    Bonne fin de journée

  9. #9
    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 674
    Points
    18 674
    Par défaut


    Comme indiqué dans la contribution s'appuyant pourtant sur IE9, il n'y a pas de fenêtre à activer !

    Il faut tout simplement attendre l'apparition du bandeau de téléchargement puis
    se déplacer par exemple avec la touche de tabulation jusqu'au bouton désiré …

    Évidemment pour comprendre, commencer par l'effectuer manuellement, c'est cela aussi l'observation (active) !

    Sinon il reste la voie semi-automatique, le téléchargement manuel du fichier, retourner sur IE8, …


    __________________________________________________________________________________________________
    La meilleure façon de ne pas avancer est de suivre une idée fixe. (Jacques Prévert)

  10. #10
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marc,
    Je comprends bien ce que tu me dis :-)
    Mais quand je te dis que je n'arrive pas à activer la fenêtre de téléchargement c'est que je n'arrive pas à la mettre en surbrillance, elle clignote en orange et mes " tabs" sont soit inutiles soit il faut en faire une quinzaine avant d'arriver sur la fenêtre de téléchargement
    Donc mon problème quand je dis activer la fenêtre, c'est pour avoir 2 tabs à faire (une pour passer a ouvrir, la 2é pour enregistrer) puis 2 down pour aller a enregistrer sous et valider
    Or comme la fenêtre n'est pas "active" je n'y arrive pas...
    J'ai bien entendu observé essayé, ré-essayé mais je n'y arrive toujours pas...
    d’où ma demande d'aide :-)
    Merci à toi!

  11. #11
    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 674
    Points
    18 674
    Par défaut



    Sans pouvoir accéder à la page, je ne peux que conseiller de t'entrainer avec la contribution !
    Elle dispose d'un lien sur une page EuroNext contenant un bouton TÉLÉCHARGEMENT …
    Bien observer les réactions après voir cliqué sur ce bouton jusqu'au téléchargement final
    avant de commencer ton code sans regarder le mien, sans tricher !

    Si tu dois simuler une quinzaine de fois la touche de tabulation, dans mon code j'en simule bien deux en une seule instruction
    pour passer d'un élément de la page vers un bouton du bandeau de téléchargement, quel est donc le problème, what else ?

    Si tu n'y arrives pas, soit c'est un manque de compétences sur le sujet soit c'est une mauvaise observation !
    Peu importe, en comparant avec mes codes, cela devrait te déboucher l'horizon …

  12. #12
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marc,
    Je ne voulais pas mettre un Application.SendKeys "{TAB 20}" car pour moi c'était trop aléatoire...
    Mais je m'y suis résolu et la miracle la macro à marché, mais malheureusement elle ne marche qu'une fois sur 10.
    Et la Je ne comprends plus. En observant comme tu le dis, certaines fois ca amène sur le bouton enregistrer et d'autres fois le sendkeys n'a aucun effet...
    Je dois t'avouer que je cale...
    Merci!

  13. #13
    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 674
    Points
    18 674
    Par défaut



    C'est donc un problème de synchronisation comme expliqué dans la contribution, ou de temporisation si tu préfères …
    Tout dépend donc du temps de réponse de la page !

    Encore une fois, vouloir tout automatiser en pilotant IE est la pire des solutions !
    Soit revenir sous IE8, soit en rester en mode semi-automatique qui est le plus fiable avec IE,
    soit abandonner IE au profit d'une QueryTable ou d'une requête, soit attendre l'éventuel intervenant miracle …

  14. #14
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Et pourtant, je mets un wait IE (voir code ci dessous) avant de lancer les sendkeys puis entre chaque sendkeys je mets un Application.Wait Time + TimeSerial(0, 0, 3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Sub WaitIE(IE As InternetExplorer)
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.readyState = READYSTATE_COMPLETE
          DoEvents
       Loop
     
    End Sub
    Je ne peux pas repasser sous IE8 car la bureautique ne l'autorise pas sur mon ordinateur...
    Je suis donc condamné à rester sous IE9
    Par contre le bandeau telechargement apparait en orange clignotant au bout d'un certain moment...
    Bref, je sais plus...
    Merci en tous cas!

  15. #15
    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 674
    Points
    18 674
    Par défaut




    Oui moi aussi cela peut clignoter mais sans rapport …

    Il faut aussi la propriété busy pour l'attente d'IE, c'est pourtant dans le code de ma contribution !

  16. #16
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    bonjour Marc, j'ai mis le fameux busy et la c'est mieux... la macro marche exactement 1 fois sur 2
    Le problème reste similaire, la 2è fois, la macro ne lance pas les sendkeys et elle revient sur la page d'identification toute seule et comme le login est rentré elle me met une erreur 91 si je me souviens bien...
    Merci pour tout, je progresse mais j'aimerais avoir du 100%...
    Bonne journée et si tu as une idée...

  17. #17
    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 674
    Points
    18 674
    Par défaut




    Cela ressemble pourtant bien au classique souci de synchronisation …

    Sinon rien d'autre à part abandonner IE au profit de QueryTable ou d'une requête !

Discussions similaires

  1. Enregistrer sous Automatique Fichier Excel depuis macro Autocad
    Par Arno_ap dans le forum Général VBA
    Réponses: 27
    Dernier message: 28/06/2011, 17h13
  2. Réponses: 5
    Dernier message: 08/07/2009, 18h25
  3. Afficher un fichier excel dans un Windows Form
    Par Ibn Rochod dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2009, 18h44
  4. Enregistrer un fichier excel dans la base ORACLE 9i
    Par amine1980 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/12/2008, 10h04
  5. Enregistrement fichier excel dans une base mysql (pas csv)
    Par morph12345 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/03/2006, 10h01

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