Ouvrir avec une boucle plusieurs fichiers numerotés avec une variable dans le no

Signaler
Messages postés
2
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
27 février 2009
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour, 

   Voila, je vais essayer d'expliquer ma question clairement :)
   J'ai un dossier où se trouvent 54 fichiers config0.ini à config53.ini et 199 autres nommés données0.ini à données198.ini
   Donc en tout j'ai 253 fichiers, qui ne différent quasiment que par le numéro a la fin.
   Je dois les ouvrir et les copier dans Excel, un par un, pour effectuer une extraction de données dans chacun.
   Je pourrais faire ma macro en mettant 253 fois la meme commande en changeant juste le nom, mais je voudrais savoir si il est possible de faire une boucle, deux en fait, pour chaqun des types de fichiers.
   
   Actuellement, j'ouvre le fichier avec la commande :
   chemin d'acces + nom de fichier et  For Input As #1
   comment pourrais-je faire avec une boucle, genre ce qui suis (la macro est pas exacte, c'est juste pour exemple)

   For i=0 To 53
      Open "D:/Essai/Mise à jour/config" & i & ".ini" For Input As #1
   Next i

   Ca m'eviterai de devoir avoir une macro longue comme le bras, et juste deux boucles a la place, mais j'arrive pas dans le chemin d'acces a mettre autres chose que le chemin et le nom complet. Même en mettant une variable String qui contient tout le chemin et dans laquelle je change le chiffre, ca marche pas.

   J'espere n'avoir pas été trop brouillon
   Merci de votre aide

Aj

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ton code est correct.
ca va coincer, parce que tu peux pas ouvrir deux fichiers avec le même numéro de canal (le #1)

mais sinon, la concaténation, pour créer le nom du fichier ini est correcte.
Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009

Ah utilise le FileSystemeObject  pour ouvrir tes fichiers et fais la création d'une fonction de lecture

Dim S_Ligne As String, S_Adresse as String
Dim O_FSO As FileSystemObject
Dim O_FluxEntree As TextStream

Set O_FSO = New FileSystemObject
Set O_Repertoire = O_FSO.GetFolder(S_CheminFichier)
Set O_Fichiers = O_Repertoire.Files ' liste des fichiers presents dans ton repertoire

    For Each O_Fichier In O_Fichiers
       Set O_FluxEntree = O_FSO.OpenTextFile(S_CheminFichier & "" & Cstr(O_Fichier.Name), 1, False)
      
        Do While Not O_FluxEntree.AtEndOfStream

            I_NbLigne = I_NbLigne + 1

             ' lecture de la ligne

             S_Ligne = O_FluxEntree.ReadLine

             ' traitement de la ligne

             P_TraitementLigne (S_Ligne)

         Loop
    Next O_Fichier

Etc ...

tu peux faire une expression reguliere aussi sur le nom du fichier pour t'assurer que tu traites uniquement les bons
genre un truc comme ca :

Set O_RegExp = New RegExp
O_RegExp.Pattern = "^config[0-9]{2}.ini"
If O_RegExp.Test(NomFichier) then ... etc

enfin mon idée d'algo ...
Messages postés
2
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
27 février 2009

Oki merci
 Dans le cas du Input For #1, je disais qu'il n'etait pas correct parce que j'ai pas mis que je fermait le #1 a la fin du passage dans la boucle, vu que j'exploite le fichier dans la boucle avant de passer au suivant.
Je vais re-essayer ca, j'ai peut etre un peu merder en tapant la ligne.

Sinon, il fait que je me plonge dan le FileSystemObject il est vrai, je vasis servir de ce que vous avez repondu pour commencer à m'y mettre !! loll

Merci beaucoup en tout cas pour vos réponses

Dom
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
se plonger dans FSO...

euh, non ^^
comme son nom l'indique, c'est destiné au Scripting (VBS) et n'a pas sa place dans un programme VBA ou VB6 (lenteur relative)
Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009

relatif ^^ je traite plus de 300 fichiers en faisant des tris à tout va et mes temps de traitements sont acceptables ... moins de 3 minutes ... je trouve ça honnête ^^
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
... a voir, c'est long.
doit pouvoir diminuer d'une tiers ou deux (au bas mot)