Bonjour,
Je cherche à me faire une petite macro en VB (excel toute versions), qui me convertit un fichier CSV (sep. = point virgule).
Dans certaines colonnes, j'ai des valeur hexa 16 bits, qui sont interprétée comme des nombre, et la c'est le drame: une valeur 07E5 est traduite par 70000... logique
J'ai donc essayé de spécifier le format de chaque colonne avec le champ FieldInfo (oui, j'ai bien lu l'aide )
Le problème est que j'ai 168 colonnes à traiter, et si j'écris des trucs du genre:
et bien je dépasse les capacités de l'éditeur apparemment !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Selection.TextToColumns Destination:=Range("A1"), _ DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=True, 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), Array(8, 2), Array(9, 2), Array(10, 2), _ Array(11, 2), Array(12, 2), Array(13, 2 ), Array(14, 2), Array(15, 2), _ Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2)), etc...
Donc, j'ai tenté d'écrire un truc plus intelligent:
En clair, je construit un tableau de tableau contenant les formats de chaque colonne (1 pour standard, 2 pour texte).
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 Dim TableauDeCol(256) As Variant Dim TableauDeFormats As Variant Dim i As Integer TableauDeFormats = Array(1, 1, 1, 1, 1, 1, 1, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 1, 1, 1, 1, 1, 1, 1, _ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1) iNbCol = UBound(TableauDeFormats) For i = 1 To iNbCol TableauDeCol(i) = Array(i, TableauDeFormats(i)) Next i Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ FieldInfo:=TableauDeCol, _ Semicolon:=True, Comma:=False, Space:=False, Other:=False
Mais ca coince: erreur -13 incompatibilité de type.
Si qqun à une idée, merci d'avance.
Partager