Accueil > Forum > > > > Pb d'ouverture de fichier de temps en temps
Pb d'ouverture de fichier de temps en temps
jeudi 29 mai 2008 à 09:01:22 |
Pb d'ouverture de fichier de temps en temps

baz187rem
|
Bonjour a tous !!
Je me retrouve aujourd'hui dans une situation un peu compliqué que je n'arrive pas a expliquer et a résoudre. J'ai différent fichiers texte qui ont la meme structure mais pas forcément le meme nombre de ligne. Ce que je ne comprend pas c'est lorsque j'ouvre un fichier ou un autre, un va fonctionner l'autre va me renvoyer une erreur 52 "Bad file name or number".
J'ai regarder la valeur du freefile a l'ouverture et il a 1 donc un seul fichier d'ouvert et en plus il n'est pas déjà ouvert par ailleur.
Qu'arrive t il sachant qu'un autre va très bien se comporter alors qu'il y a moins de lignes dans le fichier... Quelqu'un peut m'aider ?
Je met un bout de code :
Public Sub FiltrageFichier(chemin As String) Dim LectureLigne As String Dim mCol As New Collection Dim FileNumber As Integer FileNumber = FreeFile Dim oldCompteSlots As Integer Dim nbpasse As Integer Open chemin For Input As #FileNumber oldCompteSlots = CptSlots nbpasse = 1 While Not EOF(FileNumber) Input #FileNumber, LectureLigne If Mid(Trim(LectureLigne), 1, 5) = "Wafer" Then If nbpasse = 1 Then Input #FileNumber, LectureLigne Input #FileNumber, LectureLigne While InStr(1, LectureLigne, "Aver.") = 0 If LectureLigne <> "" And Mid(LectureLigne, 1, 1) <> "(" Then If CptSlots > 24 Then RAZFeuille "MODELS" Close #FileNumber MsgBox "La somme des slots des fichiers a traiter est supérieur à 25.", vbCritical, "Erreur" End End If Set mCol = DecomposeLigne(LectureLigne) With TabSlots(CptSlots) .Num = Trim(mCol.Item(2)) .M = Trim(mCol.Item(3)) .D = Trim(mCol.Item(4)) .RR = Trim(mCol.Item(5)) .OR = Trim(mCol.Item(6)) .Tx = Trim(mCol.Item(7)) .Ty = Trim(mCol.Item(8)) End With CptSlots = CptSlots + 1 End If Input #FileNumber, LectureLigne Wend nbpasse = nbpasse + 1 ElseIf nbpasse = 2 Then Input #FileNumber, LectureLigne Input #FileNumber, LectureLigne While InStr(1, LectureLigne, "Aver.") = 0 If LectureLigne <> "" And Mid(LectureLigne, 1, 1) <> "(" Then Set mCol = DecomposeLigne(LectureLigne) With TabSlots(oldCompteSlots) .SX = Trim(mCol.Item(3)) .SY = Trim(mCol.Item(4)) .RW = Trim(mCol.Item(5)) .OW = Trim(mCol.Item(6)) .TX = Trim(mCol.Item(7)) .TY = Trim(mCol.Item(8)) .Enspec = CompareSpec(.TranswX, Txt_TranslationSpec) If .Enspec = True Then .Enspec = CompareSpec(.TranswY, Txt_TranslationSpec) End If End With oldCompteSlots = oldCompteSlots + 1 End If Input #FileNumber, LectureLigne Wend nbpasse = nbpasse + 1 Else Close #FileNumber End If End If Wend Close #FileNumber End Sub
Ps : Y'a pas une facon pour colorer le texte facon VB ca serait plus lisible pour vous ....
|
|
jeudi 29 mai 2008 à 09:27:05 |
Re : Pb d'ouverture de fichier de temps en temps

Renfield
|
possible, peut etre de lire tout le fichier d'un coup, serait plus efficace (plus rapide)
pour ton PS:
http://www.vbfrance.com/code.aspx?ID=41455
|
|
jeudi 29 mai 2008 à 11:25:22 |
Re : Pb d'ouverture de fichier de temps en temps

jack
|
Salut Sur quelle ligne as-tu cette erreur ? Tu fais une boucle de lecture While-Wend (nota : While-Wend est obsolète, utiliser de préférence Do While-Loop). Mais tu fais plusieurs Input à l'intérieur : pas bon : Supposons que le premier Input après le While soit la dernière ligne du fichier, si tu en fais un autre derrière (*), il y aura erreur, mais pas celle dont tu parles. (*) d'autant que tu peux en faire un paquet puisque du refais des Input dans une autre boucle à l'intérieur ! La suggestion de RenField est surement la solution. Dis nous sur quelle ligne tu as l'erreur, cela va éclairer le problème. Attention aussi : Input ne lit qu'une variable de la ligne, pas la ligne entière. Si tu as une virgule dans la ligne, la lecture sera incomplète et pourra perturber le prochain Input--> Voir Line InputTout dépend de la structure de ton fichier Vala Jack, MVP VBNB : Je ne répondrai pas aux messages privés Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
jeudi 29 mai 2008 à 18:28:13 |
Re : Pb d'ouverture de fichier de temps en temps

baz187rem
|
Mon fichier ne comporte pas de virgule mais des points comme décimal encore une chance ^^
Sinon j'ai modifier un peu la boucle a la place du while wend je suis donc passé par le fameux do while loop. (C'est la meme chose je trouve mais bon)
En fait le debbugger me renvoie sur la ligne do while not EOF(FileNumber)
et si je survole avec la souris, le FileNumber est = 1
En ce qui concerne mes plusieurs appels de lineInput je trouve cela un peu normal car je lis la ligne entière et si je trouve pas l'item que je cherche je passe a la suivante. Par contre une fois que je l'ai trouver, je saute x ligne (correspondant aux X lignes d'appel de input ...)
ps bis : Le lien donne la source a compiler mais j'ai pas vb6 ^^
|
|
vendredi 30 mai 2008 à 00:12:07 |
Re : Pb d'ouverture de fichier de temps en temps

MPi
|
Personnellement je fais Do Until EOF(FileNumber) '... Loop Mais je ne pense pas que ça règlera ton problème... Par contre, on ne voit pas ce que contient exactement "chemin" Si tu mets MsgBox Chemin en tout début de procédure, qu'est-ce que ça donne exactement comme nom de fichier ? MPi² Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
|
|
vendredi 30 mai 2008 à 01:18:01 |
Re : Pb d'ouverture de fichier de temps en temps

jack
|
Ok Je n'avais pas fait gaffe, mais tu as un Close #FileNumber en plein milieu de tes boucles. Je pense que tu dois y passer, mais comme tu ne sors pas de la boucle, il continue et quand il recommence, le fichier étant fermé, il génère l'erreur. A l'emplacement de ton Close, si tu n'as plus rien à faire dans ta boucle de lecture, remplace ton Close par un " Exit Do" à condition d'avoir utiliser Do-Loop à la place du While-Wend(le Close est fait au sortir de la boucle) Vala Jack, MVP VBNB : Je ne répondrai pas aux messages privés Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
vendredi 30 mai 2008 à 01:24:58 |
Re : Pb d'ouverture de fichier de temps en temps

MPi
|
Bonne déduction mon cher Watson... MPi² Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
|
|
vendredi 30 mai 2008 à 07:53:28 |
Re : Pb d'ouverture de fichier de temps en temps

baz187rem
|
ha pas bete le exit do je vais tester ca aujourd'hui...
Bon je l'ai tester en direct et super cela fonctionne !! Et en effet finalement quand j'y repense c'est bien cela... Je continue de boucler, le fichier fermer donc c'est normal qu'il n'arrive plus a parcourir le fichier qui est fermé !!
Super en tout cas merci à toi Jack pour avoir trouver la solution et a toi MPi² d'avoir essayer et Renfield aussi ^^
|
|
Cette discussion est classée dans : item, trim, filenumber, mcol, lectureligne
Répondre à ce message
Sujets en rapport avec ce message
ListBox & Item [ par Neurolog ]
Comment recupere t-on la valeure de l'item que l'on séléctionne dans une ListBox ?Merci
Comment determiner le dernier item d'une ListBox?? [ par Cyber Bug ]
Comment fait on pour determiner le dernier item d'une ListBox si on ne sait pas combien i va avoir d'items dans la listeMerci d'avance(C'est assey URG
URGENT FILENUMBER - FICHIER TXT [ par Koundelitch ]
Je voudrais recuperer le filenumber d'un fichier txt ouvert par une applicationwindows.OULire un fichier txt sans preciser le filenumber (par une autr
Connaitre le filenumber d'1 fichier txt ouvert par l'utilisateur TRES TRES URGENT [ par Koundelitch ]
Je voudrais savoir comment connaitre le filenumber d'1 fichier txt que l'on a ouvert.je m'explique avec un petit exemple:on ouvre un fichier nommer to
---- VERIFIER EXISTENCE D'UN ITEM ---- [ par smike ]
j'aimerais savoir comment connaitre l'existence d'un item nommé nameItem dans une listview.J'ai essayé listview.findItem(nameItem) mais ca reourne une
liaison entre outlook et access [ par snoop ]
je cherche à récuperer tous les mails entrant dans outlook et les stockés dans access , de préférence par code VBA.Mon majeur problème est de ne pas p
Probleme de boucle if...then [ par kiler ]
J'ai ecrit cette boucle et VB me dit qu'elle a un défaut.Povez-vous me dire pour quelle raison?MerciPrivate Sub Command_terminer_Click() If Text_tr
Les ComboBox [ par Anaphal ]
Comment faut il faire pour qu'au lancement de mon appli le ComboBox affiche le premier item ?Et comment faire pour mettre une certain chaine dans une
Livres en rapport
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|