Bonjour à tous,
Je commence simplement le vba et ais reçu l´exercice suivant sur lequel je planche actuellement:
Je souhaite importer automatiquement vers un unique fichier Excel un grand nombre de fichiers .csv (possédant tous la même structure) qui s'actualise quotidiennement (un fichier supplémentaire chaque jour).
Avant de m'attaquer à l'automatisation, voici le résultat de mes recherches:
Le code pour l'import des fichiers (qui fonctionne):
Je souhaiterais insérer cette fonction OpenText suivante à la place de la ligne : Set Wbcsv = Workbooks.Open(Chemin & Fichier) pour formater mes colonnes au préalable. Mais je reçois une erreur lorsque jutilise cette fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 ub import_ordner_csv() Dim Wbcsv As Workbook Dim Temp As Workbook Dim Chemin As String, Fichier As String Dim LastLig As Long, NewLig As Long Dim C As Range Dim Tablo Const Sep As String = ";" Application.ScreenUpdating = False 'Inhibe la mise à jour affichage 'Chemin = ThisWorkbook.Path & "\" ' 'Chemin du dossier où chercher les fichiers csv (Ici ce classeur se trouve dans ce même dossier, sinon on peut êcrire ici le chemin du dossier Chemin = "C:\Users\vthevenin\Desktop\Futures Analyse\0 - Daten\12_2012" & "\" Fichier = Dir(Chemin & "*.csv") 'Le premier fichier csv trouvé Do While Fichier <> "" 'on fait une boucle jusqu'à ce qu'on ne trouve plus de fichier csv 'On ouvre le fichier csv qu'on affecte à la variable Wbcsv Set Wbcsv = Workbooks.Open(Chemin & Fichier) With Wbcsv.Sheets(1) LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row 'LastLig est la dernière ligne remplie du fichier csv ouvert End With With ThisWorkbook.Worksheets("Tabelle1") For Each C In Wbcsv.Sheets(1).Range("A2:A" & LastLig) 'Pour chaque cellule de A2:Axxx NewLig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 'la première cellule vide de la colonne 1 de Feuil1 de ce classeur Tablo = Split(C.Value, Sep) 'On sépare les données par rapport au séparateur (ici le point virgule) .Range(.Cells(NewLig, 1), .Cells(NewLig, UBound(Tablo) + 1)).Value = Tablo 'on copie Next C End With Wbcsv.Close 'On ferme le fichier csv Fichier = Dir() 'on cherche le fichir csv suivant Loop 'on reboucle End Sub
Je vous remercie pour votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Workbooks.OpenText Filename:= _ Fichier, _ Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _ Array(2, 1), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 9), _ Array(9, 1), Array(10, 9), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 9), Array(15 _ , 9), Array(16, 9), Array(17, 1), Array(18, 1), Array(19, 9)), TrailingMinusNumbers:= _ True
Vincent
Partager