Import CSV dans Excel

Résolu
Shrek007 -  
jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

J'ai besoin d'importer les données CSV (qui sont toutes dans un même répertoire) et de les mettre dans un unique classeur Excel (j'utilise Excel 2013).
Les fichiers CSV sont tous nommés par leur date (ex : "20161124")
et j'ai besoin de mettre tous les CSV dans la même feuille, les uns à la suite des autres, en ajoutant une colonne date qui reprend le nom du CSV importés.
Est-ce quelqu'un aurait des lignes de codes ou LE code pour m'aider ?
Merci,

5 réponses

  1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    Salut,

    Tu pourrais concaténer les fichiers csv en dehors d'excel, par exemple avec un .cmd qui contiendrait :
    del new.txt new.csv
    for %%f in (*.csv) do (for /f "delims=" %%l in (%%f) do echo %%~nf;%%l >>new.txt)
    ren new.txt new.csv
    (les lignes affichées en 2 et 3 sont une seule et même ligne)

    cdlt
            un étranger, c'est un ami qu'on n'a pas encore rencontré.
    0
    1. Shrek007
       
      comment spécifier le répertoire où se trouve les fichiers csv ?
      0
  2. Shrek007
     
    Merci mais comment exécuter ces lignes (je ne me souviens plus de comment lancer le terminal....)
    0
    1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
       
      tu fais avec le bloc-notes un fichier qui s'appelle csv.cmd, tu le places dans le répertoire où il y a les csv et dans l'explorateur tu lances le csv.cmd
      0
    2. Shrek007
       
      j'ai créé le fichier à partir du bloc note que j'ai renommé "csv.cmd"
      j'ai ensuite exécuté avec un clic droit... ca a tourné.. et puis plus rien... le fichier texte n'a (apparemment) pas été créé... d'ou peut venir le bug ?
      0
  3. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    tu devrais en fin du fichier .cmd une ligne avec la commande
     pause


    Et alors tu auras la trace de ce qui se passe comme :



            un étranger, c'est un ami qu'on n'a pas encore rencontré.
    0
    1. Shrek007
       
      je viens d'ajouter une ligne avec le code pause, mais toujours rien...
      0
  4. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    pour lancer un .cmd, il ne faut normalement pas faire clic-droit/executer, mais juste double cliquer dessus. Avec le clic-droit/executer il ne se lance pas dans le répertoire courant.

    ou alors tu as un soucis avec les extensions de noms de fichier. Sont-elles affichées pour tous tes fichiers ? Tes .csv c'est affiché dans l'explorateur 20161123.csv ou 20161123 ?

    (là je vais me déconnecter)
            un étranger, c'est un ami qu'on n'a pas encore rencontré.
    0
    1. Shrek007
       
      J'ai essayé avec le code suivant : copy *.csv fichiercomplet.csv que j'ai ensuite renommé en fichier .bat
      Double clique dessus et ça a marché nickel
      merci pour ton aide
      0
      1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977 > Shrek007
         
        super ! merci pour le retour

        tu peux aussi voir la solution de cedri0715 là dans excel
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cedric0715 Messages postés 265 Statut Membre
     
    bonjour
    pour ma par j'utilise ce code
    Sub Tst()
    Dim Fichier As Variant
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Text Files (*.csv), *.csv")
    If Fichier <> False Then
    Lire Fichier
    End If
    End Sub

    Sub Lire(ByVal NomFichier As String)

    Dim Chaine As String
    Dim Ar() As String
    Dim i As Long
    Dim iRow As Long, iCol As Long
    Dim NumFichier As Integer
    Dim Separateur As String * 1

    ' Séparateur Point Virgule
    Separateur = ";"

    Cells.Clear
    Application.ScreenUpdating = False
    NumFichier = FreeFile
    iRow = 1

    Open NomFichier For Input As #NumFichier
    Do While Not EOF(NumFichier)
    iCol = 1
    Line Input #NumFichier, Chaine
    Ar = Split(Chaine, Separateur)
    For i = LBound(Ar) To UBound(Ar)
    Ar(i) = Replace(Ar(i), "M-", "")
    Cells(iRow, iCol) = Ar(i)
    iCol = iCol + 1
    Next

    Select Case Cells(iRow, 1)
    Case Is = Cells(iRow, 2)

    End Select

    iRow = iRow + 1
    Loop
    Close #NumFichier

    Application.ScreenUpdating = True
    End Sub


    cela marche très bien
    0