fichier txt avec , (decimale) et ; (séparateur)

dg62

XLDnaute Barbatruc
Bonsoir le forum


Comment traiter un fichier txt de ce type : , pour les décimales et ; comme séparateur.


23,1234 ; 12,345
.
.
.
12,234 ; 123

quand je lis les données par input au lieu d'avoir 2 variables, je me retrouve avec 23 1234 12 345.

est-il possible d'éviter cela ?


La procédure est presente dans le post 'probleme vba' auteur Gaby.


Merci
 

Hervé

XLDnaute Barbatruc
Bonsoir didier

As tu essayé de passer par un split ?

En reprenant la macro trouvé dans le post de gaby, et sans test :

faut peut etre passé par line input pour récupérer une ligne complète et la mouliné pas un split

Dim v2 As Variant
       
        interRow = interRow + 1
        Line
Input #1, v1
        v2 = Split(v1, ';')
            Range('A' & interRow).Value = v2(0)
            Range('B' & interRow).Value = v2(1)

Ca fait un peu soluce à deux balles, mais en attendant mieux.

salut
 

Hervé

XLDnaute Barbatruc
re didier

Comme je te le disais sur le tchat, c'est surement par ce que tu n'a pas de données en deuxième colonne de ton fichier texte.

Par contre je t'ai donné une soluce, qui ne fonctionne pas :eek:

Je te propose donc une autre méthode :


Dim v2 As Variant
Dim i As Byte

interRow = interRow + 1
Line
Input #1, v1
v2 = Split(v1, ';')
For i = 0 To UBound(v2)
    Cells(interRow, i + 1).Value = v2(i)
Next i
lig = lig + 1


En espérant t'avoir aidé.

Salut
 

dg62

XLDnaute Barbatruc
re


Code:
Line Input #1, var1
        var2 = Split(var1, ';')
        Debug.Print var1
        Debug.Print UBound(var2)
            Range('A' & interRow).Value = var2(0)
         Range('B' & interRow).Value = var2(1)


var1 renvoie 50 1,0233 c'est ok

et Ubound(var2) 0 That is the problem !

Bonne soirée
 

dg62

XLDnaute Barbatruc
Salut Hervé


j'ai trouvé l'erreur, elle venait du fichier lui même.


pour mes essais j'avais généré un fichier 'txt dos' donc avec tabulation.

en le remplaçant par un csv ça marche impec



Code:
Do While Not EOF(1)
        
        interRow = interRow + 1
       
        
        Line Input #1, var1
        var2 = Split(var1, ';')
        
        
            Range('A' & interRow).Value = CDbl(var2(0))
            Range('B' & interRow).Value = CDbl(var2(1))


Encore Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 443
Messages
2 088 472
Membres
103 862
dernier inscrit
pln47