Bonjour à tous,

J'ai besoin d'un petit coup de pouce pour avancer sur une petite macro Excel.

J'ai plusieurs centaines de fichiers .csv tous formatés de la même manière. J'aimerais pouvoir les ouvrir tous a la suite pour en extraire certaines cellules que je souhaite recopier toutes sur la même ligne dans un fichier excel. (pour pouvoir créer des graphs depuis ce dernier) En gros j'aimerais finir avec un fichier contenant plusieurs centaines de lignes chacune contenant les informations m'important d"un seul .csv

J'ai qqs soucis :

- Mes fichiers csv ne contienne aucune données permettant de les discriminer entre eux. Seul le nom du fichier le permet (ex: 1235XC-124-P1.csv contient les données de la séquence 124 !)

- J'ai besoin de changer de lignes pour chaque fichiers mais comment être sur que tout les fichiers csv on bien été pris en compte ?

Des conseils ?

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
Sub Compilation()
Dim Temp As String
Dim Ligne As Long
 
'ouvrir tous les csv dans le repertoire
 
Temp = Dir(ActiveWorkbook.Path & "\*.csv")
Application.DisplayAlerts = False
Do While Temp <> ""
If Temp <> "All.xls" Then
Workbooks.Open ActiveWorkbook.Path & "\" & Temp
 
'les csv sont creés depuis des fichiers txt
 
Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1)), TrailingMinusNumbers:=True
 
Workbooks(Temp).Sheets(1).Range("A1").CurrentRegion.Copy
Workbooks("all.xls").Sheets(1).Activate
 
'la premiere cellules de chaque doit etre defini par le numéro de sequence seulement compris dans le nom du csv
 
Ligne = Sheets(1).Range("A65536").End(xlUp).Row + 1
Range("A" & CStr(Ligne)).Select
ActiveSheet.Paste
Workbooks(Temp).Close
End If
Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub
Merci par avance