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

Ajryaz Messages postés 2 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009 - 26 févr. 2009 à 21:34
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 27 févr. 2009 à 19:23
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 févr. 2009 à 21:58
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.
0
hebus16 Messages postés 80 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 2 octobre 2009 1
27 févr. 2009 à 10:58
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 ...
0
Ajryaz Messages postés 2 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 27 février 2009
27 févr. 2009 à 16:04
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 févr. 2009 à 16:06
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hebus16 Messages postés 80 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 2 octobre 2009 1
27 févr. 2009 à 17:11
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 févr. 2009 à 19:23
... a voir, c'est long.
doit pouvoir diminuer d'une tiers ou deux (au bas mot)
0
Rejoignez-nous