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...
Ce serait vraiment sympa si quelqu'un pouvait m'aider...
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 Subet notamment à mieux comprendre comment fonctionne les 'Array' en VBA.
Merci beaucoup.
Emmanuel
Partager