Ouvrir avec une boucle plusieurs fichiers numerotés avec une variable dans le no
Ajryaz
Messages postés2Date d'inscriptionjeudi 26 février 2009StatutMembreDernière intervention27 février 2009
-
26 févr. 2009 à 21:34
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 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
Ajryaz
Messages postés2Date d'inscriptionjeudi 26 février 2009StatutMembreDernière intervention27 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
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 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 ^^