begin process at 2008 08 22 04:27:37
1 229 771 membres
42 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pb d'ouverture de fichier de temps en temps [ Langages dérivés / VBA ] (baz187rem)

Pb d'ouverture de fichier de temps en temps le 29/05/2008 09:01:22

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


Re : Pb d'ouverture de fichier de temps en temps le 29/05/2008 09:27:05

Renfield
(Admin CS)
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

Re : Pb d'ouverture de fichier de temps en temps le 29/05/2008 11:25:22

jack
(Admin CS)
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)

Re : Pb d'ouverture de fichier de temps en temps le 29/05/2008 18:28:13

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

Re : Pb d'ouverture de fichier de temps en temps le 30/05/2008 00:12:07

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


Re : Pb d'ouverture de fichier de temps en temps le 30/05/2008 01:18:01

jack
(Admin CS)
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)

Re : Pb d'ouverture de fichier de temps en temps le 30/05/2008 01:24:58

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


Re : Pb d'ouverture de fichier de temps en temps le 30/05/2008 07:53:28

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



Classé sous : item, trim, filenumber, mcol, lectureligne

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS