Import CSV dans Excel

Résolu/Fermé
Shrek007 - 24 nov. 2016 à 16:43
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 - 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,
A voir également:

5 réponses

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

tu peux aussi voir la solution de cedri0715 là dans excel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cedric0715 Messages postés 210 Date d'inscription mercredi 25 février 2015 Statut Membre Dernière intervention 6 mai 2018
25 nov. 2016 à 12:45
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