Ma macro marche très bien, mais avec un dossier j'ai un souci: j'ai les 4 premiers fichiers csv qui se retrouvent à la fin. Alors qu'ils sont appelés de HQE-3.....HQE-50. Avec un autre dossier ca marche très bien exemple: paul-12 à paul-30. ce n'est pas les majuscule. Bien entendu ca m'embête car mes dossiers ont un nombre de fichiers variables. Impossible de trouver la source du problème, j'ai renommé et tout rien à faire:

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
46
47
48
49
50
51
52
Sub csvImport4()
Sheets("fichier").Select
ActiveWindow.ScrollRow = 356
    ActiveWindow.ScrollRow = 345
   ' !!!! SUPPRIMER TOUS CES ActiveWindow.ScrollRow INUTILES !!!
    Range("M372").Select
    Const NB_COL_CSV As Integer = 8    '** définir ici le nombre (fixe) de colonnes de tes csv
    Dim j As Integer                    '** compteur colonne
 
    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é
        j = 1
        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, j).End(xlUp).Row + 1    '** la première cellule vide de la colonne j 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, j), .Cells(NewLig, j + UBound(Tablo))).Value = Tablo  'on copie
                If IsNumeric(.Cells(NewLig, j + 3).Value) Then .Cells(NewLig, j + 3).Value = CDbl(.Cells(NewLig, j + 3).Value) '** Pour éviter ta boucle de fin sur la colonne D
                Next c
            End With
 
            Wbcsv.Close                                                  'On ferme le fichier csv
            Set Wbcsv = Nothing
            j = j + NB_COL_CSV                                           '** Incrément compteur colonne
 
            Name Chemin & Fichier As Replace(Chemin & Fichier, ".txt", ".csv")
            Fichier = Dir()                                              'on cherche le fichir csv suivant
        Loop
    End If
    Sheets("Cas A").Select
End Sub