Importer le fichier .csv le plus recent d'un dossier

Bien le bonjour à tous,

Je me lance enfin dans les macros sur excel (depuis 2 jours, donc vraiment tout nouveau) et je tâtonne. Mon projet du moment est de créer un fichier qui suit mes compte. J'aurais besoin de récupérer les données d'une feuille csv (séparées par des ';'). J'ai pour cela récupéré des bouts de codes à droite a gauche, que je ne comprends pas entièrement. Mais qui individuellement fonctionne pour :

1) trouver dans mon dossier le fichier le plus récent (cela fonctionne car la msgbox m'affiche le bon)

2) avec un enregistrement de macro j'ai réussi à importer un fichier donné (mais j'aimerais que le nom du fichier soit une variable, celui issu de la partie précédente, en l’occurrence le fichier .csv le plus récent du dossier) et à le mettre à l'endroit que je veux (dans la bonne feuille, sur la bonne cellule

3) supprimer les requêtes pour éviter que ca plante durant mes test et supprimer les lignes qui ne m’intéressent pas dans les données récupérées.

Cependant impossible pour mon mini niveau de faire tout tenir ensemble : c'est à dire que le fichier récupéré soit le fichier le plus récent. Les endroits avec les ??????? sont les endroits ou je sens qu'il faut que je change des trucs puis que ce sont les endroits ou le nom de mon fichier importé lors de l'enregistrement de la macro etait présent. Et vu que je veux que le fichier change, je pense que ce sont les endroits ou je dois changer les choses

Sub macro_test_import_récent()

'nettoyer_feuille_import Macro

    Sheets("Import banque").Select
    Cells.Select
    Selection.ClearContents
    Range("A1").Select

'identifier le fichier le plus recent

  Dim monrep As String, monfic As String, derdate As Date, ledernier As String
  monrep = "C:\Users\kkkkk\Desktop\Gestion comptes\Fichier banque\"
  monfic = Dir(monrep & "*.csv")
  derdate = DateSerial(1, 1, 1)
  Do While monfic <> ""
    If FileDateTime(monrep & monfic) > derdate Then
      ledernier = monrep & monfic
      derdate = FileDateTime(monrep & monfic)
    End If
    monfic = Dir
  Loop

  'importer

    Range("A1").Select

    ActiveWorkbook.Queries.Add Name:="??????????????", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""???????????????""),[Delimiter="";"", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Type modifié"""
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=????????????????????;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [?????????????????]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "??????????????????"
        .Refresh BackgroundQuery:=False
    End With

'delete les requetes existantes
Dim cn As WorkbookConnection, qry As WorkbookQuery
    On Error Resume Next
    For Each cn In ActiveWorkbook.Connections
        cn.Delete
    Next cn
    For Each qry In ActiveWorkbook.Queries
        qry.Delete
    Next qry

End Sub

Merci beaucoup de m'avoir lu.

Bonjour

Ecrire une requête POwerQuery depuis VBA est une absurdité nécessitant une bonne dose de masochisme...

Powerquery est capable seul de trouver le dernier fichier d'un dossier, de le traiter et restituer...

6 clics suffisent...

Rechercher des sujets similaires à "importer fichier csv recent dossier"