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 des fichiers Excel .csv en ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Avatar de clubleo
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2016
    Messages : 63
    Billets dans le blog
    1
    Par défaut Télécharger des fichiers Excel .csv en ligne
    Bonjour,

    Je souhaite enregistrer les fichiers CSV dont les URL sont contenus sur une page internet.
    Pour cela j’ai commencé par chercher un site contenant des fichiers .csv
    Avec le module qui suit, j’arrive à trouver les fichiers et le bandeau de la boite à dialogue ENREGISTRER/ ENREGISTRER SOUS & ANNULER

    Je demande de l’aide afin de terminer ce module par l’enregistrement des fichiers csv dans la destination indiquée.



    Environnement actuel :Windows 10 Excel 2016 (OUTILS _ RÉFÉRENCES _ Microsoft Internet Controls & Microsoft HTML Object Library)

    Pièce jointe 521619
    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
     
     Dim IE As Object, NomURL, NomExtHtml, NomHtml, Lig
     Sub Importation_Fichiers_csv()
                n = 0: Nl = 0: Columns(1).ClearContents: Columns(2).ClearContents
     
           NomURL = "https://help.shopify.com/fr/manual/customers/import-export-customers#mod-le-csv-client"
      Destination = "C:\Temp_FichCSV"
       NomExtHtml = ".csv"
     
         Set IE = CreateObject("internetexplorer.application")
     IE.Top = 20: IE.Height = 1000: IE.Left = 50: IE.Width = 700
     IE.Navigate (NomURL): IE.Visible = True: Do: DoEvents: Loop Until IE.readyState = 4
     IE.document.Body.Style.Zoom = 1
      For Each Lig In IE.document.getElementsByTagName("a")
                   n = n + 1: '   If InStr(Lig, ".csv") <> 0 Then MsgBox Lig
           If Len(Lig) > Len(NomHtml) + Len(NomExtHtml) + 1 _
            And Left(Lig, Len(NomHtml)) = NomHtml _
             And Right(Lig, Len(NomExtHtml)) = NomExtHtml Then
                Nl = Nl + 1: Cells(Nl, 1) = Lig.className: Cells(Nl, 2) = Lig
     
              Set bouton = Lig   ' IE.document.all("/csv/product_template.csv")
                  bouton.Click
    '@@@@@             
             MsgBox "A ce niveau, comment mettre le fichier CSV dans=> " & Destination & " ???":Stop
           End If
      Next
           IE.Quit
    End Sub
    Merci à ceux qui se pencheront sur mon PB

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Il serait plus simple de laisser le téléchargement se faire vers le répertoire par défaut de votre navigateur (en général "C:\Utilisateurs\Identifiant\Téléchargements\")
    puis récupérer le fichier par après pour l'exploiter, le copier ou le déplacer .... etc.

  3. #3
    Membre averti
    Avatar de clubleo
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2016
    Messages : 63
    Billets dans le blog
    1
    Par défaut
    Tout d'abord, merci pour la rapidité de la prise en compte du pb.

    Actuellement, si je déroule complètement le module, tout au moins pour le premier fichier .csv, celui-ci est introuvable.
    Ceci contrairement à un fichier .txt ou autres que je récupère facilement avec de simples macros depuis "Téléchargements".

    Encore merci

  4. #4
    Membre averti
    Avatar de clubleo
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2016
    Messages : 63
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par clubleo Voir le message
    Bonjour,

    Je souhaite enregistrer les fichiers CSV dont les URL sont contenus sur une page internet.
    Pour cela j’ai commencé par chercher un site contenant des fichiers .csv
    Avec le module qui suit, j’arrive à trouver les fichiers et le bandeau de la boite à dialogue ENREGISTRER/ ENREGISTRER SOUS & ANNULER

    Je demande de l’aide afin de terminer ce module par l’enregistrement des fichiers csv dans la destination indiquée.



    Environnement actuel :Windows 10 Excel 2016 (OUTILS _ RÉFÉRENCES _ Microsoft Internet Controls & Microsoft HTML Object Library)

    Pièce jointe 521619
    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
     
     Dim IE As Object, NomURL, NomExtHtml, NomHtml, Lig
     Sub Importation_Fichiers_csv()
                n = 0: Nl = 0: Columns(1).ClearContents: Columns(2).ClearContents
     
           NomURL = "https://help.shopify.com/fr/manual/customers/import-export-customers#mod-le-csv-client"
      Destination = "C:\Temp_FichCSV"
       NomExtHtml = ".csv"
     
         Set IE = CreateObject("internetexplorer.application")
     IE.Top = 20: IE.Height = 1000: IE.Left = 50: IE.Width = 700
     IE.Navigate (NomURL): IE.Visible = True: Do: DoEvents: Loop Until IE.readyState = 4
     IE.document.Body.Style.Zoom = 1
      For Each Lig In IE.document.getElementsByTagName("a")
                   n = n + 1: '   If InStr(Lig, ".csv") <> 0 Then MsgBox Lig
           If Len(Lig) > Len(NomHtml) + Len(NomExtHtml) + 1 _
            And Left(Lig, Len(NomHtml)) = NomHtml _
             And Right(Lig, Len(NomExtHtml)) = NomExtHtml Then
                Nl = Nl + 1: Cells(Nl, 1) = Lig.className: Cells(Nl, 2) = Lig
     
              Set bouton = Lig   ' IE.document.all("/csv/product_template.csv")
                  bouton.Click
    '@@@@@             
             MsgBox "A ce niveau, comment mettre le fichier CSV dans=> " & Destination & " ???":Stop
           End If
      Next
           IE.Quit
    End Sub
    Merci à ceux qui se pencheront sur mon PB
    Pièce jointe 522963Pièce jointe 522963

  5. #5
    Membre averti
    Avatar de clubleo
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2016
    Messages : 63
    Billets dans le blog
    1
    Par défaut
    Pièce jointe 522963Pièce jointe 522963[/QUOTE]
    • NOUVAUTÉS:

    Installation de fichiers de différents types à tester dans la page de ce post DEVELOPPEZ tels que: .xlxs xls txt ...

    Prolongation du module pour la partie téléchargement

    Donc essayage de charger les fichiers contenus depuis cette page Internet avec ce module dans un fichier Excel

    FONCTIONNEMENT:
    1- La partie ajoutée comprend une boucle For Each Lig / Next Lig afin de faire succéder les téléchargements

    2- Pendant la boucle les URL des fichiers sont écrits correctement dans Sheet(1) et apparaissent dans le bandeau Ouvrir / Enregistrer

    PROBLÉMES:
    1-En général aucun fichier n’est enregistré malgré l'écriture des URL dans Sheet(1).

    2- Bizarrement, parfois, en principe, seul un fichier .xlsx est enregistré dans TÉLÉCHARGEMENT
    Alors la boucle recommence après le dernier Next Lig
    Mais une page autre est affichée et le paramètre Lig est vide provoquant : Permission refusée Erreur d’exécution’70’

    A revoir donc certaines commandes non valables ou manquantes ???
    L’utilisation des « sleep » n‘est peut être pas judicieuse. Mais que mettre à la place pour assurer l'écriture des fichiers ???
    En particulier aux abords de CreateObjet (sleep ?????)

    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
    ' @@@ OUTILS _ RÉFÉRENCES _ Cocher Microsoft Internet Controls et Microsoft HTML Object Library
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
            (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
    Dim IE As Object, Bouton As Object, Doc As Object, Url, Lig As Object, NewLig, Login, NomHtml, NomExtHtml, Nl
    
    Sub ENREGISTREMENT_Fichiers_IE()
        NewLig = 0: Columns(1).ClearContents: Columns(2).ClearContents:: Columns(3).ClearContents
           Url = "https://www.developpez.net/forums/d2027934/logiciels/microsoft-office/excel/" _
                                  & "macros-vba-excel/telecharger-fichiers-excel-csv-ligne/#post11259802"
           Set IE = CreateObject("internetexplorer.application"): IE.navigate "": IE.navigate Url
     
           Do: DoEvents: Loop While IE.readyState <> 4 Or IE.Busy: IE.Visible = True
      
     For Each Lig In IE.document.getElementsByTagName("a")
               PosPoint = 0:       PosPoint = InStrRev(Lig, ".")
            If PosPoint > 0 Then NomExtHtml = Mid(Lig, PosPoint + 1)
       'Sélection des fichiers:
        If ((Left(Lig, 12) = "https://www." Or Left(Lig, 11) = "http://www.") _
              And PosPoint > 0) Then
            If (NomExtHtml = "doc/" Or NomExtHtml = "docx/" _
             Or NomExtHtml = "png/" Or NomExtHtml = "gif/" _
             Or NomExtHtml = "txt/" Or NomExtHtml = "xls/" Or NomExtHtml = "xlsx/" _
             Or NomExtHtml = "png/" Or NomExtHtml = "jpg/" Or NomExtHtml = "jpeg/") Then
                                                                  
                      NewLig = NewLig + 1: Sheets(1).Cells(NewLig, 1) = Lig 'copie URL dans sheet 1
                            Lig.click    'Apparition du bandeau Ouvrir/Enregistrer avec nom du fichier
                    Sleep 1000           'Recherche du handle de la fenetre de telechargement IE EDJE
                           
                           HIEFRAME = IE.hwnd:   BringWindowToTop HIEFRAME
                         hwndIEedge = 0
                     Sleep 1000
                      
              Do:        DoEvents: i = i + 1
                         hwndIEedge = FindWindowEx(HIEFRAME, 0&, "Frame Notification Bar", vbNullString)
              Loop While hwndIEedge = 0 Or i = 20000
              
                                                 BringWindowToTop HIEFRAME
                     Sleep 500
                    With CreateObject("WScript.Shell")
                      .SendKeys "{Tab}": .SendKeys "{Tab}~"
                    End With
                     Sleep 5000
            End If
        End If
     Next Lig
      IE.Quit: Beep
    End Sub

  6. #6
    Membre averti
    Avatar de clubleo
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2016
    Messages : 63
    Billets dans le blog
    1
    Par défaut RÉSOLUTION par une boucle
    Résolu ainsi.

    Après le CLICK de téléchargement:

    BOUCLE:
    _ Un léger timer
    _ Controler l'arrivée du fichier dans le bon répertoire
    _ Controler d'un nombre de passages dans la boucle au cas où le serveur ne répond pas (dans ce cas donc sortie)
    _ Reprise vers de la boucle


    Fonctionne sans Pb.

Discussions similaires

  1. [SP-2007] Extraire des fichiers Excel ou Csv contenu dans une liste sharepoint
    Par stardeus dans le forum SharePoint
    Réponses: 23
    Dernier message: 03/11/2010, 15h11
  2. [PHP 5.0] remplacer les retour chariots d'un fichier excel csv par des ";"
    Par fullhdpixels.com dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2009, 22h56
  3. Réponses: 4
    Dernier message: 29/06/2009, 22h23
  4. Réponses: 45
    Dernier message: 14/02/2008, 15h41
  5. Réponses: 1
    Dernier message: 16/09/2007, 14h14

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