Bonjour, je suis nouveau sur le forum, et je me tire les cheveux depuis 15/16h à voyager sur des forums pour résoudre ma mission. J'avance, à grand pas pour moi mais à petit pas pour des experts comme vous je pense . Voilà le souci: Je dois récupérer des fichiers CSV (de plusieurs colonnes fixes, mais plusieurs lignes aléatoires entre 10 et 370) dans un dossier fixe et les ramener sur une feuille excel. Ca ok. Mais premier problème, j'aimerai qu'ils s'accumulent en changeant de colonne et non en s'accumulant en ligne comme actuellement. Second problème, dans la boucle j'ai une fonction qui traite la colonne qui m'interesse de chaque csv en rendant les cellules (qui se transforment à la base en fichier texte dans excel) en format nombre. Ca marche, mais que sur le premier CSV importé, alors que la fonction est dans la boucle. voici le code:

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
35
36
37
38
39
40
41
42
43
44
45
Sub csvImport4()
Dim Wbcsv As Workbook
Dim Fichier As String, Chemin 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
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    If .SelectedItems.Count = 1 Then Chemin = .SelectedItems(1)
End With
 
If Chemin <> "" Then
    Chemin = Chemin & "\"
    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
        Name Chemin & Fichier As Replace(Chemin & Fichier, ".csv", ".txt")
        Fichier = Replace(Fichier, ".csv", ".txt")
        Set Wbcsv = Workbooks.Open(Chemin & Fichier)                 'On ouvre le fichier csv qu'on affecte à la variable Wbcsv
        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("fichier")
            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
        Set Wbcsv = Nothing
        Name Chemin & Fichier As Replace(Chemin & Fichier, ".txt", ".csv")
        Dim cellule As Range
 
  For Each cellule In Range("D11:D370")
 
    cellule.Value = CDbl(cellule.Value)
 
  Next
        Fichier = Dir()                                              'on cherche le fichir csv suivant
    Loop
End If
End Sub