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):

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 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
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
Je vous remercie pour votre aide,

Vincent