begin process at 2012 02 17 03:41:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Pb d'ouverture de fichier de temps en temps


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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 Input
Tout dépend de la structure de ton fichier

Vala
Jack, MVP VB
NB : 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

Administrateur CodeS-SourceS
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 VB
NB : 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,775 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales