importation fichier txt

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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

@+
 
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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
662
Réponses
0
Affichages
402
Réponses
2
Affichages
1 K
Retour