Bonjour,

je suis débutant en VBA et j'ai essayé de faire une macro qui ferait les étapes suivantes :

1. Ouvrir une fenêtre qui permet à l'utilisateur de choisir le chemin d'un fichier .csv
2. Ouverture d'un nouveau workbook
3. Importation de données externe sous format texte (csv) délimité par une virgule, texte entre doubles guillemets et encodé en UTF-8. Certaines colonnes contiennent du texte, d'autre des dates en format Y-M-D. Il y a donc plusieurs type de données
4. Coller les données importées en A1
5. Mise en gras de la première ligne
6. Autofit de la largeur des colonnes

Voici ce que j'ai réussi à faire en enregistrant des macro et en essayant de copier-coller les résultats.

[CODE]
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
Sub import_ccsv()
'
Dim F As Variant
 
F = Application.GetOpenFilename("csv Files (*.csv), *.csv")
 
If F = False Then Exit Sub
 
Workbooks.Add
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;F", Destination _
        :=Range("$A$1"))
        .Name = "fichier_client"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 5, 2)
        .TextFileTrailingMinusNumbers = True
        End With
 
 
    Rows("1:1").Select
    Selection.Font.Bold = True
    Columns("A:A").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Columns("A:AM").EntireColumn.AutoFit
 
End Sub
Je sais bien qu'il ne s'agit pas là de la meilleure technique mais c'est tout ce que j'ai réussi à faire avec mon tout petit niveau !!

Est-ce que quelqu'un voit ou est-ce que ça cloche ?