Problème fonction EOF + Conversion CSV

samimi94

XLDnaute Occasionnel
Bonjour à tous,

Je bloque depuis quelques jours sur une macro qui est censée utiliser la fonction EOF (que je ne maitrise pas du tout).
Mon souci étant, j'ai un fichier trop long pour s'ouvrir sur une seule feuille (+ de 65536 lignes sous XL2003) pour cela j'ai trouvé une macro sur le net qui permet de l'ouvrir sur plusieurs onglets (super développement au passage) mais après la compilation il me met le message d'erreur 62, l'entrée dépasse la fin de fichier.
Après quelques recherches il s'avère qu'il faut utiliser la fonction EOF avant Input mais je ne trouve pas la solution, malgré mais différents tests !

Pourriez-vous m'aider à y voir plus clair (je mets en pièce jointe le fichier avec la macro de base) ?

Deuxième point, il s'agit d'un fichier CSV que je souhaiterai présenter en colonnes. Lorsque j'ouvre un csv il me propose de le convertir en fixe ou délimité, mais pas quand j'execute ma macro (un peu normal en soit), je souhaiterai que dans la macro de base en plus de me le mettre sur plusieurs onglets il me le tri en colonne, sachant que le séparateur est la virgule.

J'espère que je ne suis pas trop brouillon dans ma présentation, sinon n'hésitez pas à me le dire.

Merci par avance à ceux qui pourront m'apporter une aide et bonnes journées à tous les autres :)
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Problème fonction EOF + Conversion CSV

Bonjour

Voici un exemple a adapter à ton cas.

Nomfich étant le nom du fichier avec le chemin

Code:
Open nomfich For Input As #1
Do While Not EOF(1)
Line Input #1, strLine
lngPosistion = Loc(1)
msgbox( strLine)
Loop
 

samimi94

XLDnaute Occasionnel
Re : Problème fonction EOF + Conversion CSV

Bonjour Michel,

Merci pour cette réponse.
J'ai essayé ce que tu m'as conseillé, j'ai rajouté cela à la macro, le problème étant que lorsque j'execute la macro il me demande de valider X fois une fenêtre, or au vu du nombre de lignes ca finit par buguer. Du coup je n'ai pas de résultats.

Il est également fort possible que je n'ai l'ai pas mis au bon endroit dans le VB.
 

MJ13

XLDnaute Barbatruc
Re : Problème fonction EOF + Conversion CSV

Re bonjour

Il faut toujours commencer par faire simple.

Tu refaits une macro sans tenir compte de ton code (sauf si tu le comprend bien).

Tu prends mon code, tu mets la bonne variable pour nomfich, à la place de msgbox, tu places un cells(i,1).value= strLine.
Tu incrémentes ton i (avec i=i+1 après cells(i,1).value= strLine, pour écrire à la ligne +1).

Ensuite tu lances la macro et tu regardes le résultat.
Si ce n'est pas satisfaisant, tu mets un stop dans ton code et tu deboges avec F8 pour aller de pas à pas et Crl+shift+F8 pour continuer. Et la tu regardes comment sont interprétées tes variables en passant la souris sur le nom comme i, strLine.

Enfin tu pourras placer au bon endroit
Code:
if  i  = 65536 then Sheets("feuille2").activate
 

samimi94

XLDnaute Occasionnel
Re : Problème fonction EOF + Conversion CSV

Re,

J'ai créé une nouvelle macro en insérant ton code, je n'ai pas d'erreur dans l'editeur VB mais lorsque j execute la macro il me met le message "l'indice n'appartient pas à la selection" :-(
En pensant qu'il s'agissait du nom de l'onglet (Feuil1 et non Feuille1) je l'ai modifié et là il me met "Erreur défini par l'application ou par l'objet".

Lorsque je fais un pas à pas je ne vois rien de particulier !
 

MJ13

XLDnaute Barbatruc
Re : Problème fonction EOF + Conversion CSV

Re

Voici un test. Il est vrai que le premier mot Text1 n'est pas reconnu?
Il doit y avoir un code de début de fichier qu'il faut tester. Avis aux amateurs.

Enregistre le fichier txt sur ton C:\
 

Pièces jointes

  • Importe_TXT.zip
    9.1 KB · Affichages: 37

samimi94

XLDnaute Occasionnel
Re : Problème fonction EOF + Conversion CSV

Re Michel,

Alors j'ai testé ta macro avec le fichier txt. Ca fonctionne bien.
Du coup j'ai mis dans la macro le chemin d'accès de mon fichier csv.
Lorsque j'execute la macro, il met tout en ligne et non en colonnes.

Dans le Pas à Pas il m'indique une erreur sur la ligne "ActiveSheet.Cells(i, 1).Value = ligne" il s'agit de l'erreur 1004 "Erreur défini par l'application ou par l'objet".

Je me doutais que mon cas était tordu.

Merci beaucoup pour tes recherches.
 

kjin

XLDnaute Barbatruc
Re : Problème fonction EOF + Conversion CSV

Bonjour,
A tester,
Code:
Sub Fichier_CSV_import()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
ActiveCell.TextToColumns , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
If ActiveCell.Row = 65536 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
End Sub
A+
kjin
 

samimi94

XLDnaute Occasionnel
Re : Problème fonction EOF + Conversion CSV

Bonjour Kjin,

Avant tout merci pour l interêt que tu portes à mon problème.
Je viens de tester la macro que tu m'as fourni, je dirais qu'elle règle pas mal de mes soucis, à savoir elle me met bien les données en colonnes, elle met bien la suite des datas sur un autre onglet arrivée à la 65536 eme ligne, mais j'ai toujours le message d'erreur l'entrée dépasse la fin du fichier.

Merci.
 

samimi94

XLDnaute Occasionnel
Re : Problème fonction EOF + Conversion CSV

Re Kjin,

Je ne peux passer le fichier car il s'agit de données confidentielles, mais je vais faire un test avec un autre fichier que je vais crééer et voir ce que ça donne.

Petite question : je n'avais pas vu la première fois mais en refaisant le test avec ta macro il s'avère que dans la 1ère feuille il commence à intégrer les données dans la cellule C5 et non A1, ensuite il génère un onglet Feuil4 et Feuil5 mais ignore les ongles Feuil2 et Feuil3.

Je génère un fichier bidon et te tient informé du résultat obtenu.

Merci encore.
 

kjin

XLDnaute Barbatruc
Re : Problème fonction EOF + Conversion CSV

Re, bonjour JC,
L'import commence à la cellule active au moment où tu lances la macro
Sinon change "Activecell" par la cellule souhaitée
Idem pour les feuilles, ici on rajoute autant de feuilles que nécessaire, sinon indique la feuille à utiliser
A+
kjin
 

Discussions similaires

Réponses
2
Affichages
283

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz