Bonjour,
J'écris une macro pour automatiser l'import de fichier .csv avec le bon format. J'utilise donc la propriété .TextFileColumnDataTypes pour construire ma table de requête mais je n'arrive vraiment pas à faire passer des paramètres variables.
La forme classique est, par exemple :
.TextFileColumnDataTypes = Array(1, 4, 2)
et ça fonctionne très bien... tant que c'est en dur dans le code, du style :
Dim vzone as Variant
vzone = Array(1, 4, 2)
...
.TextFileColumnDataTypes = vzone


Mais, selon le fichier que j'importe, j'ai besoin de faire passer différents paramètres calculés dans Excel même. Une fois les valeurs dans des variables, je n'arrive pas à reconstituer un 'Array' que la fonction accepte. Je reçoit toujours une erreur 5 : Argument ou appel de procédure incorrect.
Voici un extrait du code dont je me sers pour chercher une solution...
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
Sub go4it()
    Dim vZone As Variant
    vZone = Array(1, 2, 4)
' vFichier  est le nom complet avec le path du fichier .csv
' vNom est juste le nom du fichier .csv
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.QueryTables.Add(Connection:=vFichier, Destination:=Range("$A$1"))
        .Name = vNom
        .FieldNames = True
        .RowNumbers = False
        .PreserveFormatting = True
        .AdjustColumnWidth = True
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileSemicolonDelimiter = True
        .TextFileColumnDataTypes = vZone
        .Refresh BackgroundQuery:=False
    End With
End Sub
Ce serait vraiment sympa si quelqu'un pouvait m'aider... et notamment à mieux comprendre comment fonctionne les 'Array' en VBA.
Merci beaucoup.
Emmanuel