Bonjour à tous !
Je dois faire un petit outils au boulot qui va manipuler pas mal de données. Je préfère utiliser R habituellement mais mes collaborateurs préfèrent que j'utilise vba car ils ont peur de se trouver dans la panade quand je partirais, ce que je peux comprendre
Le problème auquel je m'oppose est le suivant:
Pour l'outils J'aurais un certain nombre de fichiers csv (5 à 30), dans un même dossier et tous organisé de la même façon,
- Colonne "Date de la mesure"
- Colonne "Heure de la mesure"
- Colonne "Valeur"
Il y a d'autre truc mais je n'en ai pas besoin
Ce que j'aimerais c'est récupérer les trois colonnes du premier fichier pour le mettre dans un onglet "TOP 10" de mon outil, mettre en colonne 4 la colonne "Valeur" du fichier 2, en colonne 5 la colonne "Valeur" du fichier 3, et etc...
J'ai essayé des choses avec une fonction que j'ai trouvée sur le net
Je balai ensuite l'ensemble du dossier pour extraire les données de mes fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Function SelectionRep() As String Const ssfTous = &H1 Dim objShell As Object, objFolder As Object, oFolderItem As Object Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", ssfTous) If objFolder Is Nothing Then Exit Function Set oFolderItem = objFolder.Items.Item SelectionRep = oFolderItem.Path Set objShell = Nothing Set objFolder = Nothing Set oFolderItem = Nothing End Function
J'ai ensuite essayer de prendre un bout de code que je n'ai pas fait et que je n'arrive pas à adapter à mon cas.
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 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
Ca n'extrait que le premier fichier csv et en plus j'ai l'ensemble du fichier sur une seule et même colonne !
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 Sub CopierData(Fichier) With Sheets(1) .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 .Range("L1:L6").Copy Sheets("TOP10").Cells(Lig, 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True End With End Sub
Tout élément de réponse à mon problème serait d'une aide précieuse
En espérant avoir été clair et en attendant de vous lire,
Je vous souhaites une agréable fin de semaine
Partager