Bonjour à tous,

Je suis devant un problème que je n'arrive pas à résoudre, j'en appelle donc à votre aide.

J'ai devant moi 350 fichiers .csv dans des répertoires et des sous-répertoires.
Je voudrais extraire de ces fichiers la cellule B17 (si possible sans ouvrir le fichier pour un gain de temps)
Dans un dernier temps, je voudrais être capable de modifier cette cellule.

En farfouillant sur internet, j'ai trouvé une demi-solution via un buffer et le code suivant :

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
53
54
55
56
57
58
59
60
61
Option Explicit
Dim Lig As Long
Dim Chemin As String
 
Sub ExtractionCSV()
Dim Fichier
    Lig = 2
    Chemin = SelectionRep() & "\"
    Fichier = Dir(Chemin)
    Do While Fichier <> ""
        Lig = Lig + 1
        CopierData Fichier
        Fichier = Dir
    Loop
    Sheets(2).Cells.ClearContents
    Sheets(1).Select
End Sub
 
Sub CopierData(Fichier)
Dim i As Integer
    With Sheets(2)
        .Cells.ClearContents
        With .QueryTables.Add(Connection:="TEXT;" & Chemin & Fichier, Destination _
            :=.Range("A1"))
            .Name = Fichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileOtherDelimiter = """"
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
 
        'Stop
        For i = 1 To .Range("L500").End(xlUp).Row
            If Sheets("Buffer").Cells(i, 1) = "EQUIPMENT;AESSCP;;LRU;;;3SE" Then
                Sheets("Liste").Cells(Lig, 1) = Sheets("Buffer").Cells(i, 12)
            End If
        Next i
 
    End With
 
End Sub
Ce qui me semble être la bonne solution. C'est à dire que je vois bien dans ma feuille "buffer" le texte de mon CSV (en utilisant le stop entre les deux End with).
Le problème c'est que je le vois uniquement dans la colonne A et non pas configurer comme dans mon fichier CSV initial, à la limite pas très grave (mais chiant).
Mon plus gros problème, c'est que je n'arrive pas à faire le copier/coller souhaité.

Mes questions sont:
- Si vous pouvez m'aider pour ce copier/coller?
- Est-il possible de fouiller dans des sous-répertoires avec cette méthode?
- Pourrais-je facilement modifier les caractères de mes cellules avec cette méthode?

Merci d'avance pour votre aide précieuse.