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. #21
    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,

    Ok FORMIDABLE...

    Bon y a plus qu'a voir tout ca (et aussi le Dir... merci pour l'occupation supplémentaire )
    Impressionnant le nombre de discussion où tu participes...oh oui ca à l'air trapu le dir / fso...
    et puis avant pour mi février rdv sur les abeilles finir au propre la version v1.5!!!

    Une petite question tu utilises pour la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("WinHttp.WinHttpRequest.5.1")
    alors que d'habitude
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("Microsoft.XMLHTTP")
    cela fait il une grosse différence? et si oui a quel niveau?

    étude en cours...

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

    Franchement mon code source d'origine l'utilisant déjà, la librairie WinHttp permet aussi de coller au
    chapitre 6 du tutoriel sur le développement Web; j'aurais pu aussi bien utiliser la librairie MSXML2

    Quant à la librairie Microsoft.XMLHTTP c'est là aussi par facilité lorsque je débute d'un code
    déjà existant et qu'on est quasi sûr de sa présence sur les PC les plus vieux …
    J'ai l'impression que les précédentes - plus récentes - sont un poil plus rapide.

    Côté fonctionnalité, la librairie WinHttp intègre une gestion d'un timeout mais je ne l'ai pas testé.
    Elle s'avère plus délicate pour la gestion d'erreur : send n'est plus le seul devant être encadré par On Error

    Si d'autres ont un avis sur ces librairies, ou pour toute autre question, n'hésitez pas !
    Cette contribution étant passée en open bar depuis la publication de la troisième étape …

    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    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. #23
    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 Marc,

    ok, pas sûr d'avoir tout suivi dans les détails sur cette réponse mais ca va quand même
    Oui une autre question sur ton code:
    il s'agit des .SetRequestHeader:
    pour le 1° tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    'ce RequestHeader vient de:
    'Request headers from upload stream (0,064 KB):undefined
    'Content-Type:"application/x-www-form-urlencoded"

    mais d'où vient celui là?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          .SetRequestHeader "DNT", "1"
    Bonne journée

  4. #24
    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 Firefox ! Qui intègre directement dans ses options de Vie privée la possibilité
    Indiquer aux sites que je ne souhaites pas être pisté … DNT = Do Not Track
    Ce paramètre n'étant pas obligatoire …


    J'en profite pour revenir sur l'étape 2 : si le bandeau apparait furtivement mais parfois le fichier ne s'ouvre pas,
    avant d'augmenter la pause de la ligne n°21 il vaut mieux élever d'un cran celle de la ligne n°23, cela peut suffire …


    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    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. #25
    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
    bien c'est ok...

    pourquoi as tu aussi la sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    elle sert ici?

    Sinon pour le reste vraiment chapeau tu maitrises vraiment le code VBA et aussi excel...

  6. #26
    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 indiqué après le code de la troisième étape :

    Citation Envoyé par Marc-L Voir le message
    • Et c'est pas fini ! Encore un bonus avec l'évènement Worksheet_BeforeDoubleClick afin de trier une colonne !
      Lors de tests courant décembre, le fichier étant soudainement livré en vrac, j'ai ajouté un tri dans la procédure.
      Puis le fichier a de nouveau été trié …
      L'avantage du code de cet évènement est de pouvoir trier n'importe quelle colonne en double-cliquant sur son titre !
      Et en double-cliquant encore sur le titre de la même colonne, le tri est alors inversé !
    L'évènement n'intervient pas lors de la requête, il peut donc paraître inutile …
    Mais si comme en décembre dernier le fichier est de nouveau livré non trié
    ou en cas de besoin de trier l'import sur une autre colonne, c'est juste un bonus !
    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. #27
    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
    en effet j'étais passé complétement à côté...ca marche mais là faut que je comprenne l'inversion des colonnes et tout c'est du code excel tout nouveau

    de même pourrais-tu me détailler un peu plus cela stp (SpecialCells(xlCellTypeVisible)):
    i = Application.CountIf(.Cells, "-") compte le nombre de "-" en colonne 14 et AutoFilter va permettre de les filtrer pour n'afficher que les lignes avec en colonne 14 un "-" donc 1° ligne ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Application.CountIf(.Cells, "-") Then .AutoFilter 1, "-": _
                     .SpecialCells(xlCellTypeVisible).EntireRow.Delete Else .Rows(1).Delete
    cette 2° ligne je ne l'ai pas bien comprise
    puis SpecialCells(xlCellTypeVisible).EntireRow.Delete supprime toutes les lignes avec ce "-" visible
    en colonne 14 et le else .Rows(1).Delete ?

    Merci
    Bonne journée

    PS je ne suis pas là avant lundi 9

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

    SpecialCells déclenche une erreur lorsque rien ne correspond : CountIf sert donc à s'assurer d'une correspondance …

    Sans correspondance la première ligne du bloc, la ligne n°4, est quand même supprimée
    afin de ne pas avoir de décalage avec la ligne de code n°32 …

    J'avoue de ne pas avoir consacré du temps à ce p'tit bonus dans le bonus car il y a bien plus simple
    pour les lignes de code n°28 & 29 sachant que seules les lignes visibles sont supprimées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            .AutoFilter 1, "-"
            .EntireRow.Delete
    Même sans correspondance, la ligne n°4 est quand même supprimée pour ne pas perturber la suite du code …

    Au moins cela aura été formateur pour l'utilisation de SpecialCells !
    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. #29
    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 c'est noté...et encore Bravo

    etude de ton bonus avec l'évènement Worksheet_BeforeDoubleClick afin de trier une colonne

  10. #30
    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 Marc,

    Epatant ton bonus, tout simplement épatant...
    Il me semble juste si je ne fais pas d'erreur que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cancel = True 'ne sert pas ici
    Voilà ca marche nickel...Merci pour tout
    Retour sur la version V1.5 de Pat et tes abeilles...

  11. #31
    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




    Et si il sert : il empêche de passer en mode édition dans la cellule !

    Compare juste en double cliquant dans une cellule au delà de la première ligne ou en retirant cette instruction …
    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)

  12. #32
    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,

    Avec ou sans le cancel = True en double cliquant sur une cellule excel autre que la 1° ligne ici il est possible ensuite de modifier les data de la cellule (c'est bien ca le mode édition?) l'invite du curseur est disponible et prête pour cela...

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




    Après le téléchargement des données, un double-clic déclenchant le tri d'une colonne empêche aussi
    d'entrer en mode édition dans le titre de la colonne grâce à ce Cancel = True

    Sans cette instruction, le tri se déclencherait tout en entrant en mode édition, est-ce plus clair ?
    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. #34
    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
    Oui ton explication est claire merci...en effet tout se passe comme tu l'indiques.

    Marc, Merci pour toute ton aide tes explications et ton temps passé pour faire profiter de tes connaissances...

  15. #35
    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 Marc,

    Une petite question supplémentaire sur le format stp:
    lorsque tu es sous la feuille Excel est que tu tapes 41,965 alors Excel met dans la cellule 41,965 au format standard, il est ensuite possible de convertir ce format standard en format nombre. Ça c'est ok.
    Mais pour Excel lorsque tu télécharges depuis une page web une string 41,965 alors dans la cellule Excel met 41 965 au format nombre directement mais mal reconnu...pour corriger cela il suffit de remplacer avant téléchargement dans la string la virgule par un point soit 41.965 et Excel affiche 41,965 au format standard.
    La question est la suivante si tu ne peux pas remplacer la virgule par un point avant téléchargement dans l'ensemble des datas comment peux tu faire pour éviter cette erreur? j'ai essayé de modifier le séparateur décimal "," qui provoque l'erreur en "." avec ton With Application.DecimalSeparator="." échec ou bien Sheets(1).Columns("E").NumberFormat = "General" pour laisser les datas au format standard échec ou bien Sheets(1).Columns("E").NumberFormat = "0.00" pour mettre les datas au format nombre échec...Mais il semble qu'il faille modifier quelque chose dans Excel avant que les datas ne soient collées sur la feuille Excel car après le format des datas semble perdu définitivement...

  16. #36
    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


    J'ai commencé un laïus mais en fait tout dépend du contexte. J'ai choisi d'anticiper :
    la version pilotant IE génère un fichier selon le séparateur décimal en cours d'Excel,
    celle de la requête exige un point comme séparateur car c'est le seul que VBA reconnait
    même si la virgule ne pose pas de souci avec la méthode TextToColumns, démonstration oblige …

    La modification du séparateur décimal avec le code cité ne fonctionne que par anticipation,
    effectivement en amont de l'importation du fichier …
    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)

  17. #37
    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 merci...plus tard je regarderai le hta de Pat et ton FSO/Dir...

  18. #38
    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
    salut tous les deux

    je me suis penché sur la gestion d'attente dans le cadre du téléchargement de fichier Euronext en csv

    d'après ce que j'ai pu lire le problème persistant c'est l'utilisation des "application.wait..." ca qui permet bien évidement de laisser la bécane et le débit travailler a leur rythme sans craindre un raté mais j'avoue que ca me gênais

    alors les Apis sont la pour ca
    voila une ébauche pour le fichier Euronext a améliorer je suppose mais qui tiens ces promesse j'adapterais en 64 bits les apis si il le faut
    j'ai repris le départ du code de Marc pour l'ouverture de IE sur la page de téléchargement du csv
    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
     
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Const URL = "https://www.euronext.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3A1006ef55d4998cc0fad71db6a6f38530"
    Dim OK%
    Dim hWnDbandeau As Long
    Sub DemoEuroNextCSV()
        Const EG = "edit-go"
        With CreateObject("InternetExplorer.Application")
            .Navigate URL
            .Visible = True
            While .busy Or .ReadyState < 4: DoEvents: Wend
            OK = IsObject(.Document.all(EG))
            If OK Then
                With Application
                    DS$ = IIf(.UseSystemSeparators, .International(xlDecimalSeparator), .DecimalSeparator)
                End With
                .Document.all("edit-format-2").Checked = True
                If DS = "," Then .Document.all("edit-decimal-separator-2").Checked = True
                .Document.all(EG).Click
                While .busy: DoEvents: Wend
                wait_telechargement
                Application.Wait Now + TimeValue("00:00:02")    'pose avant fermeture de IE pour laisser le temps au classeur de s'afficher
                .Quit
            Else
                .Quit: Beep
            End If
        End With
    End Sub
    Sub clickOK()
    'on simule les touche tab et enter successivement
        keybd_event vbKeyTab, 0, 0, 0&
        DoEvents
        keybd_event vbKeyReturn, 0&, KEYEVENTF_KEYUP, 0&
    DoEvents
    End Sub
    Sub wait_telechargement()
        Do
            hWnDbandeau = 0
            For i = 1 To 100: Next    ' on ralenti la boucle do pour ne pas rater le handle de la fentre de telechargement :le doevents n'etant pas suffisament efficace sur ce point
            'exemple Afficher les téléchargements - Windows Internet Explorer  handle =2097628
            hWnDbandeau = FindWindow(vbNullString, "Afficher les téléchargements - Windows Internet Explorer")
            DoEvents:
        Loop Until hWnDbandeau <> 0
        Application.Wait (Now + TimeValue("0:00:01"))    ' une pause avnt de simuler les touche
        clickOK
    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

  19. #39
    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

    dans la précédente version le temps d'exécution avec le bouton "ouvrir" provoquait quand même des raté
    en effet avec ouvrir IE se fermait trop tôt

    le temps entre le clic sur le bouton "Ouvrir" et l'ouverture était trop aléatoire

    tandis que le temps de téléchargement avec le bouton "telecharger" lui restait stable

    donc j'ai choisi cette option (plus sur !!!) et ouverture du fichier a partir du dossier des téléchargements avec "Workbooks.Open"

    j'ai réduit plus que considérablement les temps d'attente

    j'ai transformé la sub en fonction afin de paramétrer des le départ le format le séparateur pour les csv

    j'ai aussi utiliser une autre api (sleep)pour les temps d'attente et surtout!!!! aussi remplacer les doevents inefficaces!!! sur ce projet (provoquant même des surcharges en mémoire )

    le sleep permettant a l'uc de respirer les cafouillages dues a l'activation d'une fenêtre ou l'autre (application excel/IE) m'ont permis de simuler les touche tab et Enter au bon moment( quelques millièmes de seconde suffisent )
    et nous voila donc avec un code fonctionnel même avec un débit de (200 Kilo ou 7.8 mega) j'ai testé les deux

    la fonction a trois arguments

    l'intention: (ouvrir ou télécharger )

    le format : (xls/csv)

    le séparateur: pour les csv (virgule ou point virgule)

    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
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Const URL = "https://www.euronext.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3A1006ef55d4998cc0fad71db6a6f38530"
    Dim OK%
    Dim hWnDbandeau As Long
    Dim eXtention
    Sub euronext_csv()
        DemoEuroNext_all_format 1, ".csv", 2
    End Sub
    Sub euronext_xls()
        DemoEuroNext_all_format 1, ".xls"
    End Sub
    Function DemoEuroNext_all_format(mode, eXt, Optional separ)
    ' on choisi l'extention xls
        Const EG = "edit-go"
        eXtention = eXt
        With CreateObject("InternetExplorer.Application")
            .Navigate URL
     
            While .busy Or .ReadyState < 4: DoEvents: Wend
            OK = IsObject(.Document.all(EG))
            If OK Then
                Select Case eXt
                Case ".xls": .Document.all("edit-format-1").Checked = True
                Case ".csv"
                    .Document.all("edit-format-2").Checked = True
                      Select Case separ
                    'le document.all ne fonctionnant pas avec le id comme reference j'utilise le getelementbyid(difference entre moi et marc )
                    ' probleme recurent entre les versions de IE
                    Case 1: .Document.getelementbyid("edit-decimal-separator-1").Checked = True
                    Case 2: .Document.getelementbyid("edit-decimal-separator-2").Checked = True
                    End Select
                End Select
                .Document.all(EG).Click
                While .busy: DoEvents: Wend
                '.Visible = True ' affiche la fenetre avnt d'appuyer sur les bouton du bandeau de telechargement (facultaif ) fonctionne meme sans
                wait_telechargement mode
                .Quit
            Else
                .Quit: Beep
            End If
        End With
    End Function
    Sub clickOK(mode)
    'on simule les touche tab et enter successivement
        keybd_event vbKeyTab, 0, 0, 0&
        Sleep (50)
        keybd_event vbKeyTab, 0, 0, 0&    'une 2 eme fois pour telecharger
        Sleep (50)
        keybd_event vbKeyReturn, 0&, KEYEVENTF_KEYUP, 0&: Sleep (100)
        If mode = 1 Then ouverture
    End Sub
    Sub wait_telechargement(mode)
        hWnDbandeau = 0
        Do
            Sleep (50)   ' on ralenti la boucle do pour ne pas rater le handle de la fentre de telechargement :le doevents n'etant pas suffisament efficace sur ce point
            'exemple Afficher les téléchargements - Windows Internet Explorer  handle =2097628
            hWnDbandeau = FindWindow(vbNullString, "Afficher les téléchargements - Windows Internet Explorer")
            DoEvents:
        Loop Until hWnDbandeau <> 0
        Sleep (300)   ' une pause avnt de simuler les touche
        clickOK mode
    End Sub
    Sub wait_fichier()
        Do: Loop Until Dir(Environ("USERPROFILE") & "\Downloads\Euronext_Equities_EU_" & Format(Date, "yyyy-mm-dd" & eXtention)) = ""
    End Sub
    Sub ouverture()
        Application.DisplayAlerts = False
        wait_fichier
        Workbooks.Open (Environ("USERPROFILE") & "\Downloads\Euronext_Equities_EU_" & Format(Date, "yyyy-mm-dd") & eXtention)
    Application.DisplayAlerts = True
     
    End Sub
    Ps: avec 2.5 méga de débit 7 secondes en moyenne pour avoir le fichier ouvert a l'écran avec le format xls,le csv un peu plus long(manipulation des check box e busy de IE)

    merci pour les retour des tests (c'est une contribution en prépa )
    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. #40
    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
    une version plus aboutie avec la mise en forme en plus

    fini les waits approximatifs
    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
     
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Const URL = "https://www.euronext.com/fr/popup/data/download?ml=nyx_pd_stocks&cmd=default&formKey=nyx_pd_filter_values%3A1006ef55d4998cc0fad71db6a6f38530"
    Dim OK%
    Dim hWnDbandeau As Long
    Dim eXtention
    Dim wbkname As String
    Sub euronext_csv()
        DemoEuroNext_all_format 1, ".csv", 1
    End Sub
    Sub euronext_xls()
        DemoEuroNext_all_format 1, ".xls"
    End Sub
    Function DemoEuroNext_all_format(mode, eXt, Optional separ)
    ' on choisi l'extention xls
        Const EG = "edit-go"
        eXtention = eXt
       wbkname = Environ("USERPROFILE") & "\Downloads\Euronext_Equities_EU_" & Format(Date, "yyyy-mm-dd") & eXtention
       With CreateObject("InternetExplorer.Application")
            .Navigate URL
     .Visible = True
            While .busy Or .ReadyState < 4: DoEvents: Wend
            OK = IsObject(.Document.all(EG))
            If OK Then
                Select Case eXt
                Case ".xls": .Document.all("edit-format-1").Checked = True
                Case ".csv"
                    .Document.all("edit-format-2").Checked = True
                    Select Case separ
                        'le document.all ne fonctionnant pas avec le id comme reference j'utilise le getelementbyid(difference entre moi et marc )
                        ' probleme recurent entre les versions de IE
                    Case 1: .Document.getelementbyid("edit-decimal-separator-1").Checked = True
                    Case 2: .Document.getelementbyid("edit-decimal-separator-2").Checked = True
                    End Select
                End Select
                .Document.all(EG).Click
                 ' affiche la fenetre avnt d'appuyer sur les bouton du bandeau de telechargement (facultaif ) fonctionne meme sans
                While .busy: DoEvents: Wend
                wait_telechargement mode
                .Quit
            Else
                .Quit: Beep
            End If
        End With
    End Function
    Sub clickOK(mode)
    ShowWindow hWnDbandeau, 2
    'on simule les touche tab et enter successivement
        keybd_event vbKeyTab, 0, 0, 0&
        Sleep (50)
        keybd_event vbKeyTab, 0, 0, 0&    'une 2 eme fois pour telecharger
        Sleep (100)
        keybd_event vbKeyReturn, 0&, KEYEVENTF_KEYUP, 0&: Sleep (50)
        wait_fichier
        If mode = 1 Then ouverture
    End Sub
    Sub wait_telechargement(mode)
        hWnDbandeau = 0
        Do
            Sleep (20)   ' on ralenti la boucle do pour ne pas rater le handle de la fentre de telechargement :le doevents n'etant pas suffisament efficace sur ce point
            'exemple Afficher les téléchargements - Windows Internet Explorer  handle =2097628
            hWnDbandeau = FindWindow(vbNullString, "Afficher les téléchargements - Windows Internet Explorer")
            DoEvents:
        Loop Until hWnDbandeau <> 0
        Sleep (300)   ' une pause avnt de simuler les touche
        clickOK mode
    End Sub
    Sub wait_fichier()
        Do: Sleep (20): Loop While Dir(wbkname) = ""
    End Sub
    Sub ouverture()
     
        Workbooks.Open (wbkname), Local:=True
        Application.DisplayAlerts = True
        traitement_fichier
    End Sub
    Sub traitement_fichier()
        With ActiveWorkbook
    Application.DisplayAlerts = False
            With Sheets(1)
                 .Rows("1:1").Select
            With ActiveWindow: .FreezePanes = False: .SplitColumn = 0: .SplitRow = 1: .FreezePanes = True: End With
     
                Union(.Columns(5), .Columns(11)).HorizontalAlignment = xlCenter
                Union(.Columns("F:I"), .Columns(13)).NumberFormat = "#,##0.000 "
                .Columns(12).NumberFormat = "#,##0 "
                .Columns("A:D").AutoFit: .Columns(10).AutoFit: .Columns(13).AutoFit
                .[G1:N1].HorizontalAlignment = xlCenter
                .Cells(2).CurrentRegion.Columns(4).Replace "é", "é", xlPart
            Rows("2:4").Delete Shift:=xlUp
            End With
        '.SaveAs Filename:=wbkname, FileFormat:=xlCSV, CreateBackup:=False
        End With
    Application.DisplayAlerts = True
    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

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