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 47 48 49 50 51 52 53 54
| Open fichier For Input As #1
Do While Not EOF(1) 'on boucle dessus jusqu'à sa fin
varGuillemets = False
maChaine = ""
Line Input #1, maLigne
'on remplace les doubles guillemets par un "!" qui servira à repérer le champ au format nombres
maLigne = Replace(maLigne, Chr(34) & Chr(34), "!", , , vbTextCompare)
'on supprime les guillemets restants
maLigne = Replace(maLigne, Chr(34), "", , , vbTextCompare)
'recopie des caractères dans une autre variable, avec transformation de la virgule en point-virgule
For a = 1 To Len(maLigne) 'on "scanne" tous les caractères de la ligne :
If Mid(maLigne, a, 1) = "!" Then 'si le caractère est un point d'exclamation
If varGuillemets = False Then
varGuillemets = True 'si on entre dans les "!"
Else
varGuillemets = False 'si on sort des "!"
End If
'maChaine = maChaine & Chr(34)
ElseIf Mid(maLigne, a, 1) = "," Then 'si le caractère est une virgule :
If varGuillemets = False Then 'la virgule n'est pas entre les guillemets
maChaine = maChaine & ";" 'on remplace la virgule par un point-virgule
Else ' la virgule est entre les guillemets
maChaine = maChaine & "," 'dans ce cas on laisse la virgule
End If
Else 'autres caractères :
maChaine = maChaine & Mid(maLigne, a, 1)
End If
Next a
'on splite en x champs selon les ";" et on met dans un tableau
tabString = Split(maChaine, ";")
For a = 0 To UBound(tabString)
Cells(i, a + 1) = tabString(a)
Next a
i = i + 1
Loop
Close #1 |
Partager