Probleme VB6

bonjour forum,

j'ai plusieurs fichiers nommés comme suit:

fichier1,fichier2,............

je voudrais les ouvrir en méme temps, j'ai fait
for index=1 to ..
open "C:fichier&index.txt" for input as #1

mais a chaque fois j'ai le message fichier non trouvé

est ce vous avez une idée?
merci d'avance

32 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Problème central: ouvrir en même temps plusieurs fichiers nommés fichier1.txt, fichier2.txt, etc., mais une boucle d’ouverture renvoie le message fichier non trouvé. Des réponses expliquent que le souci vient d’une mauvaise gestion des ouvertures, chemin ou concaténation incorrecte, ou d’ouverture en input et en output sur le même fichier. Des solutions visent à fusionner les contenus dans un fichier unique en lisant chaque fichier d’entrée et en écrivant dans le fichier de sortie, avec fermeture fiable des fichiers. En complément, il est recommandé d’éviter les ouvertures simultanées et d’ajouter une gestion d’erreurs et des tests d’ouverture.

Bobot (l’IA à votre service)
  1. Contributeur
    Salut :o)

    bonjour forum Original ;o)

    Pour répondre à ta question, il faudrait que tu fasses:

    Open "C:\Fichier" & index & ".txt"
    


    Je pense que ça devrait marcher ...

    1. salut teebo

      pour vérifier si sa marche, j'ai ajouter

      Open "C:\Rfichier & index & ".txt" For Output As #2

      mé je ne vois pas de fichier rfichier dans C

      vous avez une idée?
      1. Contributeur
        Tu as mal recopié ce que j'ai mis, j'ai mis fichier et non pas Rfichier et il manque des " .

        Qui plus est j'ai supposé que les fichiers fichier1 fichier2 ,... .txt existaient sur C:\ puisque c'est là que tu cherchais à les ouvrir...
        1. Re

          non j'ai pas mal recopié

          il ouvre seulement le premier fichier et il affiche une erreur fichier deja ouvert
          1. Contributeur
            Bon si tu me mettais tout ton code et si tu me disais ce que tu avais comme fichiers sur C:\ ?
            1. Re
              private sub commmand1_click()
              Dim y1 as double
              Dim index as integer

              for index = 1 To 500
              Open "C:\Fichier" & index & ".txt" For Input As #1

              Open "C:\RFichier" & index & ".txt" For Output As #2

              Do While Not EOF(1)

              Line Input #1, Y1

              Write #2, Y1

              Loop
              Next index
              Close#2

              end Sub

              j'ai au niveau de C des fichiers de nom "Fichier1, fichier2,....
              1. re

                a chaque index il ouvre le fichier correspodant

                j'ai pas vu ce que vous dites; est ce que vous pouvez m'expliquer?
                1. Contributeur
                  Open "C:\Fichier" & index & ".txt" For Input As #1

                  Open "C:\RFichier" & index & ".txt" For Output As #2

                  Tu ouvres le fichier fichier1.txt deux fois, une fois en input une fois en output...

                  Normal que ça plante :o)
                  1. Hello lory,

                    Si je pige bien, tu veux fusionner en un seul fichier tes fichiers 1,2,etc.
                    Est-ce que ça ne serait pas quelque chose comme ça :
                    Private Sub commmand1_click()
                    
                      Dim y1
                      Dim index As Integer
                      
                      Open "C:\RFichier1.txt" For Output As #2
                      For index = 1 To 500
                        Open "C:\Fichier" & index & ".txt" For Input As #1
                        Do While Not EOF(1)
                          Line Input #1, y1
                          Write #2, y1
                        Loop
                        Close #1
                      Next index
                      Close #2
                    
                    End Sub
                    1. Re

                      le Open "C:\Fichier" & index & ".txt" For Input As #1

                      c'est pour ouvrir le fichier qui a les donnée et le

                      Open "C:\RFichier" & index & ".txt" For Output As #2
                      c'est por crée un fichier de non RFichier ou on met les donnée du premier fichier
                      1. Contributeur
                        Oui pardon j'ai mélangé avec python (je crois,...)

                        Armojax a raison par contre...
                    2. Re

                      armojax, je veux pas fusionner mes fichiers.

                      je vais vous expliquer:

                      j'ai plusieurs fichier nommée fichier1, fichier2,.....

                      le programme que j'ai fait traite seulement un fichier et mettre le resultat dans RFichier; jusqu'a la ca va.

                      puissque mes fichiers se différent par les indexs, je voudrais que le programme traite tous les fichiers en meme temps
                      1. Re, lory

                        Ce que j'avais cru comprendre, c'est que tu voulais lire, dans une même macro, Fichier1 et le copier dans Rfichier, puis lire Fichier2 et l'écrire à la suite dans Rfichier, et ainsi de suite jusqu'à FichierN, pour avoir dans Rfichier tous les fichiers mis bout à bout.
                        Hébé si c'est pas ça, remets une couche d'explications, je pige pas...
                    3. non c'est pas ce que vous avez crue.

                      ce que je veux c'est:

                      j'ouvre le fichier1 et le met dans RFichier1, Fichier2 dans Rfichier2,........., fichierN dans RfichierN
                      1. OK, pigé.
                        Dans ce cas, réintègre à l'intérieur de la boucle l'Open et le Close de #2, couplés avec ceux de #1.
                      2. Contributeur
                        Tu ne peux pas faire une copie du fichier directement ? 8-)

                        Bon, tu n'as pas un éditeur de texte d'ouvert sur un des fichiers en plus?
                    4. armojax

                      c'est ce aue je faisait, mais tjrs l'erreurs fichier deja ouvert persiste
                      1. bonjour forum,

                        j'ai un petit soucis sur mon programme car s'il trouve pas le premier fichier , j'ai un message d'erreur
                        est ce que quelqu'un a une idée comme quoi que s'il trouve pas le premier fichier, il exécute les autres
                        merci

                        Private Sub commmand1_click()

                        Dim y1
                        Dim index As Integer
                        For index = 1 To 500

                        Open "C:\Fichier" & index & ".txt" For Input As #1
                        Open "C:\RFichier"&index&".txt" For Output As #2
                        Do While Not EOF(1)
                        Line Input #1, y1
                        Write #2, y1
                        Loop
                        Close #1
                        Next index
                        Close #2

                        End Sub
                        1. Contributeur
                          Private Sub commmand1_click()
                          OnError resume prochain

                          Dim y1
                          Dim index As Integer
                          index=1
                          While index<501
                          Open "C:\Fichier" & index & ".txt" For Input As #1
                          Open "C:\RFichier"&index&".txt" For Output As #2
                          Do While Not EOF(1)
                          Line Input #1, y1
                          Write #2, y1
                          Loop
                          Close #1
                          Next index
                          Close #2
                          :prochain
                          index=index+1
                          End Sub

                          Bon j'ai pas compilé donc y'a peut être des ajustements à faire mais l'idée est là...Tu pourrais aussi placer le :prochain devant la fermeture des fichiers mais tu risque de reavoir une erreur si le fichier n'est pas ouvert, ou alors il faut tester l'ouverture du fichier avant de les fermer...
                      • 1
                      • 2