Macro copie de données depuis différents csv et récupération d'informations dans nom du csv
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:
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