Menu

Import CSV dans Excel [Résolu/Fermé]

Shrek007 - 24 nov. 2016 à 16:43 - Dernière réponse : jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention
- 25 nov. 2016 à 22:40
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,
Afficher la suite 

11 réponses

jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention - Modifié par jee pee le 24/11/2016 à 18:37
0
Utile
1
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é.
comment spécifier le répertoire où se trouve les fichiers csv ?
0
Utile
2
Merci mais comment exécuter ces lignes (je ne me souviens plus de comment lancer le terminal....)
jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention - 24 nov. 2016 à 21:56
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
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 ?
jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention - Modifié par jee pee le 24/11/2016 à 22:39
0
Utile
1
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é.
je viens d'ajouter une ligne avec le code pause, mais toujours rien...
jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention - Modifié par jee pee le 24/11/2016 à 23:21
0
Utile
2
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é.
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
jee pee 21424 Messages postés mercredi 2 mai 2007Date d'inscriptionModérateurStatut 18 février 2018 Dernière intervention > Shrek007 - 25 nov. 2016 à 22:40
super ! merci pour le retour

tu peux aussi voir la solution de cedri0715 là dans excel
cedric0715 206 Messages postés mercredi 25 février 2015Date d'inscription 6 février 2018 Dernière intervention - 25 nov. 2016 à 12:45
0
Utile
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