Boucle avec importationde fichier texte

veropologne Messages postés 1 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 17 avril 2007 - 17 avril 2007 à 09:47
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 17 avril 2007 à 11:37
bonjour,
je decouvre vb, mais j'ai qlq notions de programmation (C,C++)
j'aurai besoin de votre aide.
j'ai besoin de traiter un grand nombre de fichiers texte (environ 5000), et toujours faire la meme chose en excel:
en gros, je dois ouvrir un fichier texte sous excel, faire une macro (calcul de moyenne et d'ecart type), coller le resultat dans cette macro dans un autre fichier excel(appelons a), fermer le premier fichier excel en l'enregistrant en .xls (alors qu'il est .txt).
puis ouvrir le fichier excel suivant, faire la meme macro, enregistrer le resultat de cette macro dans le fichier a dans une autre cellule, enregistrer en .xls et fermer ce fichier
et ainsi de suite, beaucoup beaucoup de fois.
les noms de mes fichiers textes se suivent (n15k380 puis n15k385.....)
pouvez vous m'aider?
merci.
bonne journée

2 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 avril 2007 à 10:10
Salut,
Il est difficile de deviner exactement ce que tu souhaites mais essaies ce petit bout de code.
En espérant qu'il soit assez commenté.

Private Sub CommandButton1_Click()
Dim I As Integer
For I = 380 To 500 Step 5
   Call TraiteFichier(".\n15k" & CStr(I))
Next
End Sub<hr />

Public Function TraiteFichier(ByRef NomFichier As String)
Dim Resultat As Long
Dim WB As Workbook
Static NumLigne As Long
   'initialise NumLIgne   If NumLigne 0 Then NumLigne 1
   'Ouvre le fichier txt passer ne parametre
   Set WB = Application.Workbooks.Open(NomFichier & ".txt")
   'on sauve au format XLS
   Call WB.SaveAs(NomFichier & ".xls")
   'On va passer le classeur en parametre
   Resultat = TaMacro(WB)
   'On ferme le fichier en sauvant
   Call WB.Close(True)
   'Je suppose que a.xls est déjà ouvert avant tout ton traitement
   Application.Workbooks("a.xls").Worksheets(1).Range("A" & NumLigne).Value = Resultat
   'on détruit l'objet
   Set WB = Nothing
End Function<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 avril 2007 à 11:37
Sous Excel, tu as la possibilité d'utiliser l'entegistreur de macro.
Si tu fais tes actions avec un premier fichier, tu auras le code (à modifier quelque peu) et il restera à mettre tout ça dans une boucle, ce qui ne devrait pas te causer de difficulté puisque tu connais déjà le C++

MPi
0
Rejoignez-nous