Automatiser une tache

Bonjour,

Je voudrai telecharger le meme fichier toute les 30 seconde (par exemple), l'enregistrer dans le meme endroit avec le meme nom ( pour qu'il ecrase la version précedente )

comment le programmer ?? pouvez m'aider svp

40 réponses

Résumé de la discussion

La problématique porte sur l’automatisation du téléchargement récurrent d’un même fichier toutes les 30 secondes, avec écrasement du fichier existant dans le même répertoire et sous le même nom. Des propositions basées sur VBA Excel suggèrent d’utiliser Application.OnTime pour programmer des exécutions répétées et de lancer le téléchargement, afin de maintenir le fichier à jour automatiquement. La solution évoquée inclut aussi la gestion du chemin et du nom du fichier, et peut reposer sur des méthodes complémentaires comme l’écriture dans un fichier texte ou le rafraîchissement de données. En pratique, la solution peut s’accompagner d’un fichier de configuration précisant l’URL du fichier, l’intervalle et les paramètres d’accès, afin de limiter les risques de surcharge réseau et d’échec de téléchargement.

Bobot (l’IA à votre service)
  1. Bonjour,

    J'ai une interface web dont ci-joint son image:
    https://www.cjoint.com/c/CEplE6vpjR3
    les valeurs numeriques se reinitialise chaque seconde, y'a t'il moyen de les importer sur mon tableau Excel?
    1. Contributeur
      Bonjour,

      Jamais tu ne reviens pour donner un retour sur les propositions ou pour dire merci, toujours pour une nouvelle question plusieurs jours plus tard.
      C'est contre ta religion ?
      eric
    2. hakoko
      25 avril 2013 à 14:17
      merci ça marche
      Ajouter un commentaire - Lien (#31)
      Bonjour,

      toujours, dans le meme sujet j'aimerai importé des fichier d'extension ".csv" quelle est le code que je doit ajouté a ma macro.

      merci bien
      .......
      si tu cherche ds mes discution tu trouve pleins de merci

      hakoko 67Messages postés x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x lundi 11 mars 2013Date d'inscription x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 15 mai 2013Dernière intervention x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 18 mars 2013 à 17:23
      merci infiniment!!

      ça a marché pour un premiere essay. je trouve cette solution tres ingenieuse, merci bcp
    3. Contributeur
      ok, on va dire très souvent alors...
      Mais c'est toi que ça regarde.
      Personnellement je me désintéresse lorsque c'est comme ça. Nous sommes très nombreux ainsi et c'est normal.
      Lorsque tu prends ta baguette de pain te ne dis pas merci ? En plus tu paies, et ici c'est gratuit.
      A toi de voir si désires avoir moins de personnes qui s'intéressent à ton problème.

      eric
    4. merci quand même :D je tacherai de revenir plus souvent, concernant l'interface web ya t'il moyen de recuperer le tableau sur Excel? merci bien
  2. Re,

    ligne a ajouter:

    'Efface le contenu de toutes les cellules de l'onglet actif
    If UCase(Dir(Chemin_Complet)) = UCase(Fichier_Ext) Then

    avant:
    Cells.ClearContents

    et

    End If

    avant:
    'positionne sur cellule A1
    Range("A1").Select
    1. quand je debug il m'indique la fleche dans cette ligne:

      .Refresh BackgroundQuery:=False
      End With

      je pense qu'il faut insérer une boucle if "le fichier n'existe pas" then "ne rien importer"
      1. quand le fichier a03052013.txt par exemple n'est pas crée ''il me dit qu'il na pas trouvé le fichier . verifier l'orthographe ou essayer un autre chemin d'accès
        1. Bonjour,

          Votre macro ne rafraichit pas en permanance vos donnees!!!!!!!
          1. Bonjour,

            ma macro rencontre quelque problemes, parmis ces problemes, quant la macro ne trouve pas de fichier du jour J, je souhaiterai qu'elle n'importe rien, c'est à dire que le fichier Excel reste vide jusqu'a ce que le fichier texte ce crée. d'autre part concernant ce problème :

            "f894009 :Vous renommez ou vous supprimez le fichier une fois le traitement fait."

            disant que je telecharge un fichier via le web chaque 10 min , la 9 eme minute je supprime le fichier existant pour laisser place au nouveau fichier. je voudrai neaumoins que pendant la minute ou il n'ya pas de fichier , ma macro me garde les anciennes données.
            1. Bonjour,

              Vous renommez ou vous supprimez le fichier un fois le traitement fait.
              1. Bonjour,
                si vous "deletez" ou renommez le fichier, est-ce-qu'il y a toujours une incrementation de la version??
                1. Bonjour,

                  j'ai un fichier qui se telecharge chaque 10 min, la version la plus recente n'ecrase pas la premiere dans le fichier telechargement, mais elle prend le meme nom avec un indice, genre download puis download(1) puis download(2) ecs, comment je pourai adapté mon proramme à ce probleme? de tel sorte kil importe les données du dernier fichier telechargé?
                  merci pour votre aide
                  1. SVP, urgent!!

                    j'a une partie d'un code en VB que je voudrai addapté à mon probleme, j'ai une interface web qui affiche les données d'un onduleurs ci-joint la page:
                    https://www.cjoint.com/?CDAlC5Afr1z
                    ces dates se remettent a jour chaque 24h automatiquement, il suffit juste d'actualisé la page.
                    je voudrai actualisé cette page chaque 24h et appuillé sur le boutton "telecharger le fichier" chaque 10 min.
                    ci-joint le code source de la page:
                    https://www.cjoint.com/?CDAlIbJLSAD
                    et voici la page :
                    https://www.cjoint.com/?CDAlLCdtqVD
                    et voici mon code sous VB:

                    URL ="http://193.50.118.164/cgi-bin/download.cgi"
                    Set ie = CreateObject("InternetExplorer.Application")
                    Set fso = CreateObject("Scripting.FileSystemObject")
                    ie.Navigate(URL)
                    ie.Visible=false
                    DO WHILE ie.busy
                    wscript.sleep 100
                    LOOP
                    HTML = ie.document.documentElement.innerText
                    ie.Quit
                    Set ie = Nothing
                    MsgBox HTML,64,"Récupération des Données !

                    merci de bien vouloir me donner un coup de mains

                    ya aussi ce code qui pourais aidé peut etre:

                    Code :Sélectionner tout - Visualiser dans une fenêtre à part12345678910111213141516171819202122232425262728293031323334353637 Sub piloterPageWeb()
                    'nécéssite d'activer la référence Microsoft HTML Objects Library
                    Dim i As Integer
                    Dim IE As InternetExplorer
                    Dim maPageHtml As HTMLDocument
                    Dim Helem As IHTMLElementCollection

                    Set IE = CreateObject("InternetExplorer.Application")
                    IE.Visible = True

                    IE.navigate "http://mail1.voila.fr/webmail/login.html?REDIRECTION_INIT=TRUE"
                    Do Until IE.readyState = READYSTATE_COMPLETE
                    DoEvents
                    Loop 'attend la fin du chargement

                    Set maPageHtml = IE.document
                    Set Helem = maPageHtml.getElementsByTagName("input")

                    'exemple de boucle pour lister les objets type "select"(listes de choix) dans la page
                    'Dim Hsel As IHTMLElementCollection
                    'Set Hsel = maPageHtml.getElementsByTagName("select")
                    'For i = 0 To Hsel.Length - 1
                    'MsgBox Hsel(i).getAttribute("name") & " / " & Hsel(i).getAttribute("value")
                    'Next i

                    '(boucle pour lister les objets type "input" de la page)
                    'For i = 0 To Helem.Length - 1
                    'MsgBox Helem(i).getAttribute("name") & " / " & Helem(i).getAttribute("value")

                    'une autre possibilité pour déclencher le clic ( non utilisable dans cet exemple)
                    'If Helem(i).getAttribute("value") = "texte du bouton" Then Helem(i).Click
                    'Next i

                    Helem(7).innerText = "piloter page internet VB" 'champ de saisie mots clés
                    Helem(8).Click 'simulation clic

                    End Sub
                    1. Bonjour,

                      N'ayant pas le fichier, code pour un csv de chez moi, adapter le a votre fichier

                          'importation
                          'adapter chemin et nom de fichier
                          With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\_cles\Trace.CSV", _
                              Destination:=Range("$A$1"))
                              'adapter nom de fichier
                              .Name = "Trace"
                              .FieldNames = True
                              .RowNumbers = False
                              .FillAdjacentFormulas = False
                              .PreserveFormatting = True
                              .RefreshOnFileOpen = False
                              .RefreshStyle = xlInsertDeleteCells
                              .SavePassword = False
                              .SaveData = True
                              .AdjustColumnWidth = True
                              .RefreshPeriod = 0
                              .TextFilePromptOnRefresh = False
                              .TextFilePlatform = 850
                              .TextFileStartRow = 1
                              .TextFileParseType = xlDelimited
                              .TextFileTextQualifier = xlTextQualifierDoubleQuote
                              .TextFileConsecutiveDelimiter = False
                              .TextFileTabDelimiter = True
                              .TextFileSemicolonDelimiter = True
                              .TextFileCommaDelimiter = False
                              .TextFileSpaceDelimiter = False
                              'mettre autant de 1 que de colonnes dans le ficher csv
                              .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
                              .TextFileTrailingMinusNumbers = True
                              .Refresh BackgroundQuery:=False
                          End With
                      


                      Bonne suite
                      1. Bonjour,

                        toujours, dans le meme sujet j'aimerai importé des fichier d'extension ".csv" quelle est le code que je doit ajouté a ma macro.

                        merci bien
                        1. celle ci:

                          Sub Import_Fichier()
                          Dim Fichier, Fichier_Ext, Repertoire, Chemin, Chemin_Complet
                          Dim Ma_Feuille As Worksheet
                          Dim Type_Fichier As String

                          'fige ecran
                          Application.ScreenUpdating = False

                          For Each Ma_Feuille In Worksheets
                          Ma_Feuille.Select
                          Fichier = Range("A1").Value
                          Type_Fichier = Range("B1").Value
                          Chemin = Range("C1").Value
                          'Efface le contenu de toutes les cellules de l'onglet actif
                          Cells.ClearContents
                          Range("A1").Value = Fichier
                          Range("B1").Value = Type_Fichier
                          Range("C1").Value = Chemin

                          If Fichier = "" Then
                          ' il faut calculer en fonction de la date
                          Fichier = "a" & Format(Date, "yyyymmdd")
                          End If
                          Fichier_Ext = Fichier & Type_Fichier
                          Chemin_Complet = Chemin & Fichier_Ext

                          If Type_Fichier = ".TXT" Then

                          'Importation du fichier texte a afficher, premiere cellule a remplir: A2
                          'la base du code est obtenu avec l'enregistreur de macro et travaile en fonction
                          'du besoin: noms de ficher et repertoire changeant en fonction de la date
                          With ActiveSheet.QueryTables.Add(Connection:= _
                          "TEXT;" & Chemin_Complet, Destination:= _
                          Range("$A$2"))
                          .Name = Fichier
                          .FieldNames = True
                          .RowNumbers = False
                          .FillAdjacentFormulas = False
                          .PreserveFormatting = True
                          .RefreshOnFileOpen = False
                          .RefreshStyle = xlInsertDeleteCells
                          .SavePassword = False
                          .SaveData = True
                          .AdjustColumnWidth = True
                          .RefreshPeriod = 0
                          .TextFilePromptOnRefresh = False
                          .TextFilePlatform = 850
                          .TextFileStartRow = 1
                          .TextFileParseType = xlDelimited
                          .TextFileTextQualifier = xlTextQualifierDoubleQuote
                          .TextFileConsecutiveDelimiter = False
                          .TextFileTabDelimiter = True
                          .TextFileSemicolonDelimiter = False
                          .TextFileCommaDelimiter = False
                          .TextFileSpaceDelimiter = False
                          .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
                          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
                          .TextFileTrailingMinusNumbers = True
                          .Refresh BackgroundQuery:=False
                          End With

                          ElseIf Type_Fichier = ".XLSX" Then
                          Application.DisplayAlerts = False
                          Workbooks.Open Filename:=Chemin_Complet
                          Range("A2:AM250000").Copy
                          ThisWorkbook.Activate
                          Range("A2").Select
                          ActiveSheet.Paste
                          Workbooks(Fichier_Ext).Close
                          Application.DisplayAlerts = True
                          End If
                          'Selection Donnees importees
                          Range("A2:AM8643").Select
                          'RAZ tri
                          ActiveSheet.Sort.SortFields.Clear
                          'Selection tri cle A2 descendant
                          ActiveSheet.Sort.SortFields.Add Key:=Range("A2"), _
                          SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                          xlSortTextAsNumbers
                          'Tri Donnees
                          With ActiveSheet.Sort
                          .SetRange Range("A3:AM250000")
                          .Header = xlNo
                          .MatchCase = False
                          .Orientation = xlTopToBottom
                          .SortMethod = xlPinYin
                          .Apply
                          End With
                          Next Ma_Feuille
                          'positionne sur cellule A1
                          Range("A1").Select
                          'Parametrage interval temps import: ici 3 secondes
                          Next_Scan = Now() + TimeValue("00:00:03")
                          Application.OnTime Next_Scan, "Import_Fichier"

                          Application.ScreenUpdating = True

                          End Sub

                          puis celle la:

                          Sub Import_Fichier()
                          Dim Fichier, Fichier_Ext, Repertoire, Chemin, Chemin_Complet
                          Dim Ma_Feuille As Worksheet
                          Dim Type_Fichier As String

                          'fige ecran
                          Application.ScreenUpdating = False

                          For Each Ma_Feuille In Worksheets
                          Ma_Feuille.Select
                          Fichier = Range("A1").Value
                          Type_Fichier = Range("B1").Value
                          Chemin = Range("C1").Value
                          'Efface le contenu de toutes les cellules de l'onglet actif
                          Cells.ClearContents
                          Range("A1").Value = Fichier
                          Range("B1").Value = Type_Fichier
                          Range("C1").Value = Chemin

                          If Fichier = "" Then
                          ' il faut calculer en fonction de la date
                          Fichier = "a" & Format(Date, "yyyymmdd")
                          End If
                          Fichier_Ext = Fichier & Type_Fichier
                          Chemin_Complet = Chemin & Fichier_Ext

                          If Type_Fichier = ".TXT" Then

                          'Importation du fichier texte a afficher, premiere cellule a remplir: A2
                          'la base du code est obtenu avec l'enregistreur de macro et travaile en fonction
                          'du besoin: noms de ficher et repertoire changeant en fonction de la date
                          With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Chemin_Complet, Destination:=Range("$A$1"))
                          .Name = Fichier
                          .FieldNames = True
                          .RowNumbers = False
                          .FillAdjacentFormulas = False
                          .PreserveFormatting = True
                          .RefreshOnFileOpen = False
                          .RefreshStyle = xlInsertDeleteCells
                          .SavePassword = False
                          .SaveData = True
                          .AdjustColumnWidth = False 'pas d'ajustement des colonnes
                          .RefreshPeriod = 0
                          .TextFilePromptOnRefresh = False
                          .TextFilePlatform = xlMSDOS 'format txt msdos
                          .TextFileStartRow = 1
                          .TextFileParseType = xlDelimited
                          .TextFileTextQualifier = xlTextQualifierDoubleQuote
                          .TextFileConsecutiveDelimiter = True
                          .TextFileTabDelimiter = True
                          .TextFileSpaceDelimiter = True 'delimiteur espace
                          .TextFileColumnDataTypes = Array(xlTextFormat) 'definition format colonnes
                          .TextFileTrailingMinusNumbers = True
                          .Refresh BackgroundQuery:=False
                          End With

                          ElseIf Type_Fichier = ".XLSX" Then
                          Application.DisplayAlerts = False
                          Workbooks.Open Filename:=Chemin_Complet
                          Range("A2:AM250000").Copy
                          ThisWorkbook.Activate
                          Range("A2").Select
                          ActiveSheet.Paste
                          Workbooks(Fichier_Ext).Close
                          Application.DisplayAlerts = True
                          End If
                          'Selection Donnees importees
                          Range("A2:AM8643").Select
                          'RAZ tri
                          ActiveSheet.Sort.SortFields.Clear
                          'Selection tri cle A2 descendant
                          ActiveSheet.Sort.SortFields.Add Key:=Range("A2"), _
                          SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                          xlSortTextAsNumbers
                          'Tri Donnees
                          With ActiveSheet.Sort
                          .SetRange Range("A3:AM250000")
                          .Header = xlNo
                          .MatchCase = False
                          .Orientation = xlTopToBottom
                          .SortMethod = xlPinYin
                          .Apply
                          End With
                          Next Ma_Feuille
                          'positionne sur cellule A1
                          Range("A1").Select
                          'Parametrage interval temps import: ici 3 secondes
                          Next_Scan = Now() + TimeValue("00:00:03")
                          Application.OnTime Next_Scan, "Import_Fichier"

                          Application.ScreenUpdating = True

                          End Sub
                          1. c'est faux ce que je fais??
                        2. Re,

                          jexecute la macro sans apporter les modif de quelle macro parlez-vous
                          1. Biensur , je parametre, jexecute la macro sans apporter les modif pour voir si je me suis pas trompé de chemin, il importe, des que j'apporte les modif il n'affiche plus rien,
                            1. Re,

                              blague a part, vous parametrez bien le bon chemin pour le bon fichier???????
                              • 1
                              • 2