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