Traiter à la suite tous les fichiers textes d'un répertoire

Signaler
-
 Tignard -
Salut à toutes et à tous,

Voici mon problème. Je dois traiter ligne par ligne un fichier texte type afin de récupérer des valeurs numériques et les envoyer sous EXCEL. Jusque là, pas de gros problèmes.

Le problème est que je dois automatiser cette tache, c'est à dire la personne qui va lancer l'application doit indiquer le chemin d'un répertoire puis l'application doit :

- Traiter en bouche tous les fichiers textes de ce répertoire puis s'arrêter lorqu'elle arrive au dernier fichier texte.

Merci de votre aide,
Olivier

4 réponses

' Procédure à appeler pour lancer le traitement en lui passant le dossier de recherche en paramètre
Private Sub SearchFile(ByVal StartPath As String)

Dim Search As String
Dim Filename As String

' Assure toi qu'il y est bien une barre oblique "" à la fin de StartPath
Search = Dir$(StartPath & "*.txt")

If Search <> "" Then

Do

If (Search <> "." And Search <> "..") Then

' Chemin d'accès complet du fichier trouver
Filename = StartPath & Search

' S'assurez que c'est bien un fichier(pas obligatoire)
If (GetAttr(Filename) And vbDirectory) <> vbDirectory Then

' Crée toi une procédure ou fonction pour traiter le fichier trouver en lui passant le fichier trouver en paramètre

Call ProcédureDeTraitement(Filename)

End If

End If

Search = Dir$() ' Recherche le prochain fichier
DoEvents

Loop Until Search = "" ' Boucle tant qu'il trouve des fichiers

End If

End Sub

'========================================================'

Public Sub ProcédureDeTraitement(NomDuFichier As String)

' Ton code pour traiter le fichier

End Sub

[mailto:VB__MAN@Hotmail.com VB_MAN]
Merci de ta réponse,

J'ai réussi à automatiser cette tache afin de traiter les fichiers à la chaine. J'utilise une Box. De cette façon, l'utilisateur de l'application choisit le répertoire qu'il veut puis clique sur un bouton Command. L'appli se lance toute seule. Tous les fichiers *.txt sont traités à la chaine suivant une procédure.

Le problème est que la commande DIR renvoie des fichiers mais pas dans l'ordre alphabétique. Or, j'ai absolument besoin de traiter les fichiers contenus dans le répertoire dans l'ordre alphabétique !!! Comment puis-je m'y prendre.

Je vous explique. Imaginons que mes fichiers s'appellent
- E01.txt
- E02.txt
- E03.txt
- I01.txt
- I02.txt
- I03.txt
Etc...

Les fichiers E contiennent les cotes métrologiques externes des pièces (01, 02 , 03).
Les fichiers I contiennent les cotes métrologiques internes des pièces (01, 02, 03).
En traitant les fichiers dans l'ordre alphabètique, je peux envoyer sous EXCEL à la LigneExcel i les valeurs dans l'ordre. Par conséquent, à la LigneExcel i, j'aurais les valeurs correspondant à la pièce 01 par exemple. Je ne risque donc pas de mélanger les cotes externes avec les cotes internes entre différentes pièces.

J'espère que je suis assez clair.

Merci encore pur vos conseils.
Olivier
Tu pourrais envoyer tous les fichiers trouver dans une ListBox invisible avec la propriété Sorted = True et ensuite,

Dim I As Long

For I = 0 To List1.ListCount - 1

Call ProcédureDeTraitement(List1.List(I))

Next I

de cette facon tu va traiter tous les fichiers en ordre alphabètique!
Merci de ta réponse mais en lisant un bouquin j'avais trouvé tout seul !!!

Maintenant, je dois commander excel à partir de VB. Par exemple, je dois sélectionner à la fin de l'envoi des valeurs dans les cellules Excel les cellulles qui contiennent des chiffres. Je dois ensuite leur afecter une mise en page spécifique puis enregistrer puis imprimer...

Bref, je vais essayer de trouver ces commandes sur le NET. Si vous avez des infos, n'hésitez pas à m'en parler.

Merci