Ouverture fichier 65535 Lignes

  • Initiateur de la discussion niko
  • Date de début
N

niko

Guest
Bonjour a tous,

Une question qui vous a surement ete deja pose, je vous demande de m'excuser et de me rediriger eventuellement vers le post approprie:

On me demande de modifier une macro ouvrant une serie de fichiers dont certains peuvent etre tres gros.

Connaissant de reputation la limite de 65535 lignes d'excel, je me demande si l'erreur de ne vient pas de la. (L'erreur en question consistant a un plantage en toute beaute d'Excel)

De plus, les gens qui utilisent cette macro ont l'habitude de tronquer les fichiers a la main a chaque fois pour la faire fonctionner (C'est cette operation qu'ils ne veulent plus avoir a effectuer).

La macro ouvre le fichier via "Workbooks.OpenText" et une serie de parametres evidement. Je n'ai rien trouve ici http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/xlmthOpenText.asp qui puisse me permettre de limiter le nombre de lignes ouvertes.

Je n'ai pas trouve non plus de doc relative a l'ouverture/ecriture de fichiers via VB.


Merci beaucoup,
Nico
 
Y

Yeahou

Guest
Bonjour Niko, le forum

En solution à ton problème, tu peux ouvrir ton fichier en mode de lecture séquentielle (tu ne seras pas limité en nombre de lignes) pour le diviser en plusieurs fichiers txt de 65536 lignes max avant l'ouverture avec opentext.
Open nomfichier.txt For Input As #1
tu trouveras des exemples dans l'aide sur open (l'instruction pas la méthode)
un exemple sur ce fil
<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=104116&t=104070>

Cordialement, A+
 
N

niko

Guest
Je me permet de poster a nouveau ici:

En fait, il me reste un petit probleme.

Lorsque je parcours chaque ligne de texte, Excel n'en prend qu'une en compte, mais qui contient l'ensemble du fichier.

J'ai l'impression que le caractere de terminaison de ligne (C'est un fichier UNIX), ne lui plait pas...

Une idee?
Je n'arrive pas a trouver un moyen de le specifier a l'"open" ou au "Line Input" le type de fichier


Merci bcp,
Nico
 
Y

Yeahou

Guest
Re bonjour

sans le fichier, ça va être dur.
c'est plutôt à mon avis un problème de lecture certainement du à la syntaxe que tu as utilisée.

l'exemple ci dessous t'écrira le fichier txt dans le classeur actif en partant de la feuille 1 et en décalant d'une feuille toutes les 65536 lignes.
Aprés, tu pourras appliquer un texttocolumns avec la même syntaxe qu'opentext.

Cordialement, A+


Sub essai()
Dim Val_Ligne As String
Dim Compteur As Long, Compteur2 As Integer
On Error GoTo Ferme
Open "d:\copy\test.txt" For Input As #1
Compteur = 0
Compteur2 = 1
Do While Not EOF(1)
Line Input #1, Val_Ligne
Sheets(Compteur2).Range("A1").Offset(Compteur, 0).Value = Val_Ligne
Compteur = Compteur + 1
If Compteur = 65536 Then Compteur = 0: Compteur2 = Compteur2 + 1
Loop
Ferme:
Close #1
End Sub
 
N

niko

Guest
Merci beaucoup pour ton aide, voici comment j'ai finalement procede:

J'ai fait en sorte d'intercepter l'erreur sur le trop gros nombre de ligne de opentext, de sorte:

1. De ne pas avoir de message d'erreur
2. De ne pas sortir de ma fonction

Ainsi, le reste de la fonction s'execute normalement.


Tout de meme, je suis etonne que opentext fonctionne tres bien avec les formats UNIX alors que le open sequentiel ne permet pas de parametrer les caracteres de fin de ligne et/ou le type de fichier.

Merci encore,
Nico
 

Discussions similaires

Statistiques des forums

Discussions
312 337
Messages
2 087 392
Membres
103 536
dernier inscrit
komivi