importation fichier txt

  • Initiateur de la discussion hurricane
  • Date de début
H

hurricane

Guest
bonjour

je voudrais importer un fichier *.txt dans excel si il n'y avait qu'une seul colonne pas de probleme meme si il y a plus de 65536 données mais le probleme et qu'il y a plusieurs colonnes et plus de 65536 lignes

EX :

0.2 0.3 0.4 0.5 0.6 0.4
0.5 0.6 0.5 0.8 0.6 0.5


donc comment mettre le 0.2 en "A1" et le 0.3 en "B1" et etc...

si joint la macro :
Sub lecture_fichier_txt()
Dim a As Date, b As Date, msg As Date
'prise de l'heure
a = Now
cellule = 1: colonne = 1
'Lecture des données contenues dans un fichier texte
Open "c:\toto.txt" For Input Access Read As 1
Do While Not EOF(1) ' fin de fichier txt.
Line Input #1, Textline
'Affiche le fichier lue
With ActiveCell
Cells(cellule, colonne).Activate
.NumberFormat = "@"
.Value = Text
End With
cellule = cellule + 1
If cellule > 65535 Then
cellule = 1
colonne = colonne + 1
End If
Loop
Close #1
'prise de l'heure
b = Now
'heure b - heure a
msg = (b - a)
'affichage du tps de fonctionnemnt de la macro
MsgBox msg
End Sub
 
M

michael

Guest
Bonjour,

As tu essayé avec les requêtes (Menu Données -> Données externes).

Je ne sais par contre pas pour ton pb de dépassement des 65536 lignes.
Tu dois avoir le possiblité de couper ton fichier en deux avant de l'importer.

Michael
 
P

Patmo

Guest
Salut,

pour importer mes données depuis un fichier texte, j'utilise une macro données externes du style:

Sheets("Raw datas").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Mes documents\Default.txt", Destination:=Sheets("Raw datas").Range( _
"A1"))
.Name = "default"

..........

End With

et il n'y a pas (à ma connaissance) de problèmes avec de 65535 données.

N'hésite pas à utiliser l'enregistreur de macro.

A+.

Patmo
 
H

hurricane

Guest
salut

bon sa ne fonctionne pas

si quelqu'un a une idée le probleme s"est qu'il lit la ligne du fichier txt et il l'incorpore ds la 1 er cellule il ne saute pas les espaces qu'il peut y avoir dans la ligne du fichier txt pour mettre dans le 2eme cellule le chiffre apres le 1er espace du fichier txt

je suis pas sur de bien avoir expliquer

alors

1_2_3 --->fichier txt donne 1 en" A1", 2 en "b1",3 en "C1"
"
et moi j'ai 123 en "A1"

voila i hope que quelqu'un trouve

@+
 
M

Mytå

Guest
Bonsoir le forum

Hurricane envoie le fichier *.txt dans ma bal ma verifier pour l'adapter a ta requete

jrocmano@globetrotter.net

A suivre
smiley_417.gif
 
P

Patmo

Guest
Salut hurricane,

je veux pas revenir la dessus, mais avec importation de données externes, tu as la possibilité de choisir les séparateur de colonnes, du style tab, espace, ....
Si tu enregistre une macro et que tu regarde le code, tu auras du style:

.tab=true
.space=false
...

ceci te permettra de mettre .space = True et ça devrait jouer.

Bonne chance.

Patmo
 
M

Mytå

Guest
Re le forum

Voila Hurricane essaye donc ceci

Sub Lire_fichier()
a = Timer
Ligne = 1: Colonne = 1
Cells(Ligne, Colonne).Activate
'Lecture des données contenues dans un fichier texte
Open "C:\Mes Documents\resultat.txt" For Input As #1
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, Textline
If Len(Textline) < 5 Then GoTo Saut
Do Until Asc(Right(Textline, 1)) <> 9
Textline = Mid(Textline, 1, Len(Textline) - 1)
Loop
Textline = Textline + Chr(9) + Chr(9)
'Extraire la chaine de caractères
nbre = 1: compte = 0
longueur = Len(Textline)
For i = nbre To Len(Textline) - 1
If Asc(Mid(Textline, i, 1)) <> 9 Then
compte = compte + 1
Else
Cells(Ligne, Colonne) = Mid(Textline, nbre, compte)
Ligne = Ligne + 1
nbre = nbre + compte + 1
compte = 0
If Ligne > 65535 Then
Colonne = Colonne + 1
Ligne = 1
End If
End If
Next i
Saut:
Loop
Close #1
b = Timer
MsgBox (b - a)
End Sub

A suivre
smiley_417.gif
 
H

hurricane

Guest
bonsoir

merci super

il ya juste un loupé la macro ne place pas la virgule des que le chiffre et >0

0.9999 ok
1.2365 devient 1 236 5

sinon vrai super faut je potasse la macro pour trouvé la virgule

merci

a suivre
 
M

Mytå

Guest
Re Hurricane

Version modifier avec prise en charge de la virgule si >=1

Sub Lire_fichier()
On Error Resume Next
a = Timer
Ligne = 1: Colonne = 1
Cells(Ligne, Colonne).Activate
'Lecture des données contenues dans un fichier texte
Open "C:\Mes Documents\resultat.txt" For Input As #1
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, Textline
If Len(Textline) < 5 Then GoTo Saut
Do Until Asc(Right(Textline, 1)) <> 9
Textline = Mid(Textline, 1, Len(Textline) - 1)
Loop
Textline = Textline + Chr(9) + Chr(9)
'Extraire la chaine de caractères
nbre = 1: compte = 0
longueur = Len(Textline)
For i = nbre To Len(Textline) - 1
If Asc(Mid(Textline, i, 1)) <> 9 Then
compte = compte + 1
Else
Cells(Ligne, Colonne) = CDbl(Mid(Textline, nbre, compte))
Cells(Ligne, Colonne).NumberFormat = "General"
Ligne = Ligne + 1
nbre = nbre + compte + 1
compte = 0
If Ligne > 65534 Then
Colonne = Colonne + 1
Ligne = 1
End If
End If
Next i
Saut:
Loop
Close #1
b = Timer
MsgBox ("Temps d'exécution" & (b - a) & "secondes.")
End Sub


smiley_417.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94